2015-09-04 24 views
0

可以讓我有一個表Table1(id INT,text,b text,c text)和Table2(id INT,row0 text,row1 text,row2 text)。我在Table1上有一些數據,並將其遷移到Table2(id-> id,a-> row0,b-> row1,c-> row2)。現在,我想檢查是否所有的數據都被遷移了,如果這些字段都是好的。我使用這個選擇爲了找到錯誤的Id值,但我不知道找出哪些列是不好的,例如,我有記錄Table1(1,hel,l ,O)和記錄表2(1,他,空,鄰)我想知道的是,列A/0行和b/ROW1是錯誤的在MySQL中獲取不同的列

 SELECT Table1.id, Table2.id FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id WHERE 
     Table1.a != Table2.row0 OR 
      (Table1.a NOT NULL AND BI_EN.contract.Table2.row0 IS NULL) OR 
      (Table1.a IS NULL AND BI_EN.contract.Table2.row0 IS NOT NULL) OR 
     Table1.b != Table2.row1 OR 
      (Table1.b NOT NULL AND BI_EN.contract.Table2.row1 IS NULL) OR 
      (Table1.b IS NULL AND BI_EN.contract.Table2.row1 IS NOT NULL) OR 
     Table1.c != Table2.row2 OR 
      (Table1.c NOT NULL AND BI_EN.contract.Table2.row2 IS NULL) OR 
      (Table1.c IS NULL AND BI_EN.contract.Table2.row2 IS NOT NULL) 

回答

0

我想這就夠了:

SELECT Table1.id, Table1.a, Table1.b, Table1.c, 
     Table2.id, Table2.a, Table2.b, Table2.c 
FROM Table1 
INNER JOIN Table2 
ON Table1.id = Table2.id 
    AND (Table1.a != Table2.row0 
    OR Table1.b != Table2.row1 
    OR Table1.c != Table2.row2) 
+0

該代碼不能按預期工作,因爲它給了我所有的列,而不僅僅是那些不一樣的,這就是我不知道如何獲得 –

+0

你原來的查詢只得到'id's。當您執行sql查詢時,您無法獲得不同數量的列。任何查詢總是返回相同數量的列。所以如果你只需要記錄ID - 你可以從SELECT的部分刪除其他字段。 – Alex