SQL中的条件连接

机车

我想在取决于特定条件的字段上联接两个表:

select * from table1 join table2 on table1.$variable = table2.id

$variable = table1.id1 is not null ? table1.id1 : table1.id2

我可以这样做吗?

扎赫夫龙

有几种解决方法

IF()
IFNULL(),
COALESCE(),
CASE

使用中频

SELECT * FROM table1 JOIN table2 ON 
IF(table1.id1 IS NOT NULL,table1.id1, table1.id2)=table2.id;

使用IFNULL

SELECT * FROM table1 JOIN table2 ON 
IFNULL(table1.id1, table1.id2)=table2.id;

使用COALESCE

SELECT * FROM table1 JOIN table2 ON 
COALESCE(table1.id1, table1.id2)=table2.id;

使用案例

SELECT * FROM table1 JOIN table2 ON 
(CASE 
WHEN table1.id1 IS NULL THEN table1.id2
ELSE table1.id1 
END) = table2.id;

请参阅 http://sqlfiddle.com/#!9/8076eb/4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章