繁体   English   中英

如何将3个表的结果合并为一个?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM