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产品?