我在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中匹配一次。
答案 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