只有在遵守条件时才需要添加where子句,例如:
SELECT * FROM car Where <a condition>
and ( if (car.brand = 'Renault') then car.color = 'red')
在我的例子中:如果品牌是renault,我只想要红色汽车,只有在没有雷诺的情况下我才想要其他汽车
是否可以在SQL中编写类似的东西(没有PLSQL)?
答案 0 :(得分:2)
您不能在if
子句中使用where
(SQL甚至不知道if
)。要达到你想要的效果,你需要使用类似的东西:
where ... and (car.brand = 'Renault' and car.color = 'red' or car.brand <> 'Renault')
这种脱节说“如果品牌是雷诺,那么颜色需要是红色,对于其他品牌来说无关紧要”。
如果你 - 当你发表评论 - “只想要雷诺红,......其他车只有在没有雷诺的时候”,那么你需要检查雷诺的不存在:
where ...
and (car.brand = 'Renault' and car.color = 'red'
or not exists (select * from car where car.brand = 'Renault'))
答案 1 :(得分:1)
以下简单逻辑。
如果您不确定,可能需要为此类查询编写真值表。
SELECT *
FROM car
WHERE <a condition>
AND ((car.brand= 'Renault' and car.color = 'red') OR car.brand != 'Renault')
答案 2 :(得分:0)
试试这个
SELECT * FROM car Where <a condition>
and (car.brand = 'Renault' AND car.color = 'red' OR car.brand <> 'Renault')