对于一个表中的每一行只有一行来自另一个表(mysql)

时间:2010-09-13 14:43:03

标签: mysql join

我使用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'失败了。我哪里错了?

2 个答案:

答案 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。