我有这张桌子:
(`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”?。
我想知道你的建议,谢谢
答案 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
更快,即使看起来更复杂。