我有三个表 a
、b
、c
,它们之间有共同的 id
。
Table a:-
id name value
1 a 4
2 v 6
Table b:-
id abc
2 54
3 56
Table c:-
id bcd
1 54
3 34
现在我想要的是 where 条件下的 id,数据来自所有表。
请告诉我该怎么做。
预期结果-
如果查询是
select * from a left join b on a.id=b.id left join c on a.id=c.id where b.id=3
id name value bcd abc
3 NULL NULL 34 56
如果查询是
select * from a left join b on a.id=b.id left join c on a.id=c.id where a.id=1
id name value bcd abc
3 a 4 54 NULL
最佳答案
这种解决问题的方法怎么样? :)
SELECT
z.id,
a.name,
a.value,
c.bcd,
b.abc
FROM
(
SELECT
DISTINCT y.id id
FROM
(
SELECT id FROM a
UNION ALL
SELECT id FROM b
UNION ALL
SELECT id FROM c
) y
) z
LEFT JOIN a ON z.id = a.id
LEFT JOIN b ON z.id = b.id
LEFT JOIN c ON z.id = c.id
where z.id = 3
这样你只需要给查询一个数字而不关心它存在于哪些表中。
关于mysql - mysql需要的所有条件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850623/