2013-03-11 118 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