2015-09-04 53 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