[英]SQL - How to do an IF/ELSE in JOIN conditions
我知道如何在联接条件下执行IF / ELSE,但是有没有一种方法可以基于ELSE一起对字段进行完全不同的评估?
SELECT o.id, s.id
FROM orders o
RIGHT JOIN subjects s ON s.name = 'Blah'
AND s.group_id = IF(o.service = 'Law Services', 2, ????)
在上面,我不知道要放什么????
我想说的是(伪代码):
IF o.service = 'Law Services'
JOIN subjects s ON s.name = 'Blah' AND s.group_id = 2
ELSE
JOIN subjects s ON s.name = 'Blah'
基本上,我只想在s.group_id = 2
添加JOIN条件。
您可以编写条件而不使用if
:
SELECT o.id, s.id
FROM orders o RIGHT JOIN
subjects s
ON s.name = 'Blah' AND
(o.service <> 'Law Services' or s.group_id = 2);
这可能值得一试:
SELECT o.id, s.id
FROM orders o
RIGHT JOIN subjects s
ON s.name = 'Blah'
AND s.group_id = (CASE WHEN o.service = 'Law Services' THEN 2 ELSE s.group_id END)
SELECT o.id, s.id
FROM orders o
RIGHT JOIN subjects s ON s.name = 'Blah'
AND s.group_id = IF(o.service = 'Law Services', 2, s.group_id)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.