我使用MySQL 5.1。我有两个表T1(散列,值)和T2(散列,值),我使用hash
连接它们。它们包含:
----
T1
----
1 A
2 B
3 C
4 D
----
T2
----
1 E
1 F
3 G
4 H
我的目的是从T1获取与T2中的任何行连接的所有行。
我尝试这样做:
SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.hash = T2.hash;
但我输出的T1中有两个'A'失败了。我哪里错了?
答案 0 :(得分:2)
SELECT T1.*
FROM T1
WHERE EXISTS ( SELECT T2.hash
FROM T2
WHERE T2.hash = T1.hash
)
答案 1 :(得分:2)
SELECT T1.hash, T1.value
FROM T1
WHERE EXISTS(
SELECT *
FROM T2
WHERE T1.hash = T2.hash);
如果您想使用JOIN,则需要
SELECT DISTINCT T1.hash, T1.value
FROM T1
INNER JOIN T2 ON T1.hash = T2.hash;
在SQL Server中,第一个更有效。我不知道MySQL。