我想比较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