繁体   English   中英

SQL-如何在JOIN条件下执行IF / ELSE

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM