2013-03-11 125 views
5

我有一個type字段的表。如何在mysql中編寫IF語句

我怎麼能檢查該字段查詢:

我要檢查它是否type == 'A'

然後bes = amountbed = ' - '

ELSE bed = '''

bes and bed is not really exists in my table but amount is(int)

這是我的嘗試:

SELECT billing.*, 
    CASE billing.type WHEN 'A' THEN billing.amount AS bes, '-' AS bed ELSE billing.amount AS bed, '-' AS bes END 
    FROM billing 

...我的搜索是不是有用

任何解決方案...

+0

正如你所看到的,我們都在這裏關於妥善解決:-) – 2013-03-11 13:38:35

+0

這就是好......當我嘗試這在單獨的查詢非常一致,沒有任何問題,但在我的項目.. 。error – Pooya 2013-03-11 13:59:56

+0

全部投票 – Pooya 2013-03-11 14:00:17

回答

5

可以爲每一行創造條件,支持MySQL在線IF語句。

SELECT billing.*, 
     IF(billing.type = 'A', billing.amount, '-') AS bes, 
     IF(billing.type = 'A', '-', billing.amount) AS bed 
FROM billing 
3

一個CASE-WHEN-THEN-ELSE只能有一個返回值...

這應該有訣竅:

SELECT billing.*, 
CASE billing.type WHEN 'A' THEN billing.amount ELSE '-' END AS bes, 
CASE billing.type WHEN 'A' THEN '-' ELSE billing.amount END AS bed 
FROM billing 
4

你需要爲兩個案例說明:

SELECT billing.*, 
    CASE billing.type WHEN 'A' THEN billing.amount ELSE '-' AS bes END, 
    CASE billing.type WHEN 'A' THEN '-' ELSE billing.amount AS bed END 
FROM billing 
3
SELECT billing.*, 
    CASE WHEN billing.type = 'A' THEN billing.amount ELSE 0 END AS bes, 
    CASE WHEN billing.type <> 'A' THEN billing.amount ELSE 0 END AS bed 
FROM billing 
2

根據您的MySQL版本,你可以使用IF或兩個不同的語法之一CASECASE(1),CASE(2)。

SELECT *, 
    (IF type = 'A' THEN amount ELSE '-' END IF) bes, 
    (IF type = 'A' THEN '-' ELSE amount END IF) bed 
FROM billing