【发布时间】:2020-10-24 23:58:24
【问题描述】:
我有以下4张桌子
表 a: ID, 姓名, 出价, c_id
表 b: ID, 姓名, d_id
表 c: ID, 姓名, d_id
表 d: ID, 名字
然后我有我的查询,就我能写的而言:
SELECT a.name as a_name, b.name as b_name, c.name as c_name, d.name as d_name
FROM a
LEFT JOIN b ON a.b_id = b.id
LEFT JOIN c ON a.c_id = c.id
我需要添加一个带有动态 ON 的 LEFT JOIN 寻址表“d”。 它应该是 左连接 d ON b.d_id = d.id (如果 a.b_id != 0) 要么 左连接 d ON c.d_id = d.id(如果 a.b_id == 0)
我试着写
SELECT a.name as a_name, b.name as b_name, c.name as c_name, d.name as d_name
FROM a
LEFT JOIN b ON a.b_id = b.id
LEFT JOIN c ON a.c_id = c.id
if((if a.b_id != 0,LEFT JOIN d ON b.d_id = d.id, LEFT JOIN d ON c.d_id = d.id )
但这会引发错误
您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 'IF(a.b_id != 0, LEFT JOIN d ON b.d_id = d.id, LEFT JOIN d ON c.d_id = d.id 附近使用的正确语法)' 在第 6 行"
【问题讨论】:
-
你也可以加入两次,在select中使用case表达式选择正确的表
标签: mysql sql if-statement select left-join