MYSQL如何从一个表中选择数据,只有该表中的列值与另一个表的列值匹配?

时间:2012-03-12 20:47:15

标签: mysql join union

我有两张桌子。我想从表1中获取UID,其中两个表的主题列匹配。

Table 1              

UID   SubjectA           
1     Cows           
2     Chickens       
3     Mice           
4     Rabbits        
5     Cows           

Table 2

Name    SubjectB 
A       Cows
B       Cows
C       Cows
D       Cows
E       Mice

预期结果*

获取UID:1,3,5。

我不太了解加入和结合。两者似乎都结合了两个表。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

有几种方法可以做到这一点......

首先,我建议使用exists

SELECT
    UID
FROM
    Table1
WHERE EXISTS (
    SELECT 1
    FROM Table2
    WHERE SubjectB = SubjectA
)

或者,您可以使用joindistinct

SELECT DISTINCT
    UID
FROM
    Table1 JOIN
    Table2 ON SubjectB = SubjectA

最后,您可以使用in

SELECT
    UID
FROM
    Table1
WHERE SubjectA IN (
    SELECT SubjectB
    FROM Table2
)