Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL-如何在联接条件中执行IF/ELSE_Mysql_Sql_Join - Fatal编程技术网

Mysql SQL-如何在联接条件中执行IF/ELSE

Mysql SQL-如何在联接条件中执行IF/ELSE,mysql,sql,join,Mysql,Sql,Join,我知道如何在连接条件中执行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, ????) 在上面,我不知道在?? 我想说的是(伪代码): 基本上,我只想在s.group\u id=2的情况下

我知道如何在连接条件中执行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, ????)
在上面,我不知道在
??

我想说的是(伪代码):


基本上,我只想在
s.group\u id=2

的情况下添加连接条件。如果
,则可以不使用
编写条件:

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)
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);
选择o.id、s.id
从命令到右连接
科目
关于s.name='Blah'和
(o.服务“法律服务”或s.集团_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 = (CASE WHEN o.service = 'Law Services' THEN 2 ELSE s.group_id END)