Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从2个表中选择两个匹配行_Sql - Fatal编程技术网

Sql 从2个表中选择两个匹配行

Sql 从2个表中选择两个匹配行,sql,Sql,我正在链接两个表,希望两个表中的匹配行在输出表中显示为单独的行 例如: Table 1 1 AAA 2 BBB 3 CCC 4 DDD 5 EEE 表2 2 WWW 4 XXX 5 YYY 6 ZZZ 7 UUU 输出: 2 BBB 2 WWW 4 DDD 4 XXX 5 EEE 5 YYY 有很多方法可以做到这一点(将两个集合合并为一个集合),但首先想到的是使用union语句: SELECT Column1, Column2

我正在链接两个表,希望两个表中的匹配行在输出表中显示为单独的行

例如:

Table 1
1   AAA
2   BBB
3   CCC
4   DDD
5   EEE
表2

2   WWW
4   XXX
5   YYY
6   ZZZ
7   UUU
输出:

2   BBB
2   WWW
4   DDD
4   XXX
5   EEE
5   YYY

有很多方法可以做到这一点(将两个集合合并为一个集合),但首先想到的是使用
union
语句:

SELECT Column1, Column2 
FROM Table1 
WHERE Column1 IN (SELECT Column1 FROM Table2)

UNION ALL -- union all returns all rows including duplicates
          -- union without all returns all but no duplicates

SELECT Column1, Column2 
FROM Table2
WHERE Column1 IN (SELECT Column1 FROM Table1)
ORDER BY Column1, Column2

在上面的例子中,我在操作符中使用了一个子查询来确定每个集合中应该返回哪些行;另一个可能性能更好的选项是使用联接来限制每个集合的成员,如下所示:

SELECT Column1, Column2 
FROM Table1 
INNER JOIN Table2 ON Table1.Column1 = Table2.Column1

UNION ALL

SELECT Column1, Column2 
FROM Table2
INNER JOIN Table1 ON Table1.Column1 = Table2.Column1

ORDER BY Column1, Column2

union
语句的一般概念是,您形成两个相似的集合(它们具有相同的列和相同的数据类型),然后使用
union
操作符将它们合并为一个集合,可以通过向操作符添加
all
来选择性地包括重复的行。

Hi Waka,我一直在尝试使用完整的外部联接,但是数据列在一行中。您使用的是什么SQL产品?