我想比較2個mySQL表來找出它們之間的差異。記錄可以在TableA中找到,但不在TableB中,反之亦然。使用mySQL來比較2個表
我的表如下所示:
表A
Name A1 A2 B1 B2
------------------------
John 11 12 21 23
John 11 12 21 22
John 33 34 31 33
Mary 41 42 54 55
Mary 71 72 81 82
Mary 41 42 51 52
表B
Name A1 A2 B1 B2 C D
---------------------------------
John 11 12 21 22 999 999
John 21 23 11 12 999 999
John 31 32 33 34 999 999
Mary 41 42 51 52 999 999
Mary 54 55 41 42 999 999
列A1和A2被認爲是一個基團,B1和B2考慮的另一個組。對於被認爲是一個創紀錄的兩個表中發現,我需要
- TableA(A1,A2) = TableB(A1,A2) AND TableA(B1,B2) = TableB(B1,B2)
OR
- TableA(A1,A2) = TableB(B1,B2) AND TableA(B1,B2) = TableB(A1,A2)
對於2個表,上面,我會比較所有表A的John的所有表B的約翰,和所有TableA的瑪麗所有的TableB的瑪麗。
我應該得到的輸出
Name A1 A2 B1 B2 C D
-----------------------------------------------
John 31 32 33 34 999 999 (from TableB)
Mary 41 42 54 55 (from TableA)
Mary 71 72 81 82 (from TableA)
Mary 54 55 41 42 999 999 (from TableB)
我新的MySQL和上面似乎很複雜,我說,我什至不知道從哪裏開始。
我真的很感謝這方面的幫助。
爲什麼表'A'中的'John 33 34 31 33'行沒有出現在結果中?爲什麼從'B'出現'John 31 32 33 34 999 999'? – 2012-04-20 09:16:48
@ypercube因爲'TableB'中有'John 31 32 33 34'。這對應於規則「TableA(A1,A2)= TableB(B1,B2)AND TableA(B1,B2)= TableB(A1,A2)'。 – 2012-04-20 09:18:06
是的,但'32> 33' ... – 2012-04-20 09:18:59