mysql:用if在哪里写部分查询

时间:2013-11-10 14:52:13

标签: mysql

我有这张桌子:

(`id`, `name`, `type`, `price`) 
(1, 'cats', 1, 12.25),
(2, 'dogs', 0, 11.35),
(3, 'house', 1, 7.25),
(4, 'cats2', 2, 5.26);

我需要选择所有数据,但如果类型为1,我需要获取物品的价格超过10。 我创建了这个查询:

SELECT * 
FROM  `items` 
WHERE IF(TYPE =  "1", price > 10, 1 = 1) 

运作良好,但也许可以写得更聪明或以其他方式? 也许不需要“1 = 1”?。

我想知道你的建议,谢谢

1 个答案:

答案 0 :(得分:2)

您的1=1毫无意义,但您的IF却没有。您只能使用1

SELECT * 
FROM  `items` 
WHERE IF(TYPE =  "1", price > 10, 1) 

-since MySQL将表达式计算为bool(实际上是int) - 因此1表示'true'。

但另一方面,你的条件的逻辑相当于:

SELECT * 
FROM  `items` 
WHERE `price`>10 OR `type`!="1"

但是,我在another question遇到过这样的情况,经过一番研究后,我发现IF更快,即使看起来更复杂。