如何使用mysql检查一个表中的一行是否在另一个表中?

时间:2012-11-15 15:01:31

标签: mysql sql

我在MySQL中有两个表。它们都有两列。 如何使用MySQL检查一个表中的一行是否在另一个表中?

例如,

table 1:
a, c
b, a
d, f


table 2:
a, k
c, a
g, m
c, l

如何检查表1中的每一行:(a,c)(b,a)(d,f)是否存在于表2中,然后在表1中创建一个新列,其中包含每行显示的时间表2? 这里的顺序无关紧要,因此(a,c)与(c,a)相同。因此,在这种情况下,表1中的一行(a,c)在表2中匹配一次。

2 个答案:

答案 0 :(得分:2)

使用LEFT JOIN即使table1上没有任何记录,也会显示table2的所有记录

SELECT  a.col1, a.col2, COUNT(b.col1)
FROM    table1 a
        LEFT JOIN table2 b
            ON a.col1 = b.col1 AND
                a.col2 = b.col2
GROUP BY a.col1, a.col2

答案 1 :(得分:2)

SELECT  a.col1, a.col2, COUNT(b.col1)
FROM table1 a LEFT JOIN table2 b
ON (a.col1 = b.col1 OR a.col1 = b.col2) 
AND (a.col2 = b.col1 OR a.col2 = b.col2)
GROUP BY a.col1, a.col2

http://sqlfiddle.com/#!2/89c17/1