有三个表
table a
table b
table c
我的查询是:
select a.title,a.id,b.title
from table a
case when a.type=1 then
inner join table a.id=tableb.id end
case when a.type=2 then inner join table a.id=table c.id
但是这个查询不起作用。可以帮助正确的方法来获取或执行这种类型的查询
答案 0 :(得分:1)
你不能在from子句中使用case。为此,您可以使用UNION ALL。例如:
select a.title,a.id,b.title
from table a inner join table b on a.id=b.id
where a.type=1
UNION ALL
select a.title,a.id,c.title
from table a inner join table c on a.id=c.id
where a.type=2
答案 1 :(得分:0)
你不能做类似“如果这是1然后加入其他表而不是2”的话,你必须加入两者并相应地选择:
SELECT
a.title,
a.id,
IF (tableb.title IS NOT NULL, tableb.title, tablec.title),
CASE a.type
WHEN 1 THEN tableb.id
WHEN 2 THEN tablec.id
END
FROM table a
LEFT JOIN tableb ON tablea.id = tableb.id
LEFT JOIN tablec ON tablea.id = tablec.id