2012-11-15 47 views
0

我在MySQL中有兩個表。他們都有兩列。 如何檢查一個表中的一行是否在使用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)相同。所以在這種情況下,一排表(A,C)在表1的比賽一次2

回答

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

+0

很酷,非常感謝 – Rhs

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 
沒有記錄
+0

謝謝。我忘了提及這裏的命令並不重要。所以(a,c)可以和(c,a)匹配。我認爲你的代碼限制了訂單。 – Rhs

相關問題