[英]how to combine results from 3 tables into one?
我有3张桌子:A,B和C
它们都共享一个公用的列名称“名称”。
我需要检查名称7是否在其中任何一个中。
A
name 5
name 6
name 7
B
name 8
name 9
name 10
C
name 6
name 7
name 8
name 9
将产生:
name 7
name 7
因为表A有7,C也有7,所以将它们加起来。
什么SQL可以使这种组合?
只需使用union all来堆叠A,B和C的结果:
select name,
value
from A
where value = 7
union all
select name,
value
from B
where value = 7
union all
select name,
value
from C
where value = 7
您可以使用union
来合并表:
select *
from (
select name
, value
from A
union all
select name
, value
from B
union all
select name
, value
from C
) SubQueryAlias
where value = 8
Select *
from A,B,C
Where A.name = 7 or B.name = 7 or C.name = 7;
尝试这个:
select name, value from
A inner join B on A.name = B.Name
A inner join C on A.name = C.name
where A.value = 7 or B.value = 7 or C.value = 7;
SELECT A.name as NAME_A, B.name as NAME_B, C.name as NAME_C
FROM A
LEFT JOIN B ON B.value = A.value
LEFT JOIN C ON C.value = B.value
WHERE A.value = 7 or B.value = 7 or C.value = 7
UNION
SELECT A.name as NAME_A, B.name as NAME_B, C.name as NAME_C
FROM A
RIGHT JOIN B ON B.value = A.value
RIGHT JOIN C ON C.value = B.value
WHERE A.value = 7 or B.value = 7 or C.value = 7
输出示例
NAME_A | NAME_B | NAME_C
7 | NULL | 7
我们也可以尝试-
SELECT *
FROM A, B, C
WHERE A.name = B.name OR B.name = C.name OR C.name = A.name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.