0

我在 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 中的一次。

4

2 回答 2

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
于 2012-11-15T15:11:01.227 回答
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

于 2012-11-15T15:53:18.827 回答