我有两张桌子:
Table1
列colA, colB, colC
Table2
列colX, colY, colZ
我尝试从Table1
获取colC
的{{1}}个值与Table2
colZ
匹配的所有行。
我尝试了以下内容:
select Table1.colA,Table1.colB,Table1.colC
from Table1 inner join Table2 on Table1.colC = Table2.colZ
这似乎不起作用,因为查询的结果是Table1
中存在的行数的20倍。
真心感谢任何帮助。
答案 0 :(得分:3)
三个选项:
将INNER JOIN
与DISTINCT
SELECT DISTINCT Table1.colA,
Table1.colB,
Table1.colC
FROM Table1
INNER JOIN Table2 ON Table1.colC = Table2.colZ
使用EXISTS
SELECT Table1.colA,
Table1.colB,
Table1.colC
FROM Table1 WHERE EXISTS (SELECT 1 FROM Table2 WHERE ColZ = ColC)
使用IN
SELECT Table1.colA,
Table1.colB,
Table1.colC
FROM Table1
WHERE ColC IN (SELECT ColZ FROM Table2)
答案 1 :(得分:2)
您可以像这样使用EXISTS
。
select Table1.colA,Table1.colB,Table1.colC from Table1
WHERE EXISTS (SELECT 1 FROM Table2 WHERE Table1.colC = Table2.colZ)
答案 2 :(得分:0)
在查询中使用DISTINCT
:
SELECT DISTINCT
Table1.colA,Table1.colB,Table1.colC
FROM Table1
INNER JOIN Table2
ON Table1.colC = Table2.colZ