如何在mysql中使用IF ELSE条件

时间:2015-10-08 06:51:14

标签: mysql

表:mytable

id  created_on            status    purchase_price_without_tax  purchase_tax
1   2015-08-07 00:00:00     1              3322.80                 5.00
1   2015-07-15 15:16:23     7              3599.00                 71.98
1   2015-07-14 15:16:23     2              3599.00                 71.98
1   2015-07-16 15:16:23     4              3599.00                 91.98
1   2015-07-17 15:16:23     5              3599.00                 21.98

这是我的查询

SELECT * FROM mytable 

WHERE 
(IF( `status` IN('1','2') , (`status` IN('1','2')),  (`status` IN('7')) )  )
AND id=1

但没有得到正确的结果,因为我希望它是这样的:

where 
IF (`status`=1 OR  `status`=2 )
      then status IN ('1','2')

ELSE
   `status`=7

注意:如果状态为1或2,则它将保留所有其他状态行,并仅选择状态为1或2的行。如果没有状态为1或2的行,则仅选择status = 7

的行

1 个答案:

答案 0 :(得分:1)

使用UNION两个查询来测试这两种情况。

SELECT *
FROM mytable
WHERE status IN (1, 2)
AND EXISTS (SELECT 1 FROM mytable WHERE status IN (1, 2))
UNION
SELECT *
FROM mytable
WHERE status = 7
AND NOT EXISTS (SELECT 1 FROM mytable WHERE status IN (1, 2))