在MySQL中获取不同的列
假设我有一个表Table1(id INT,a text,b text,c text)和Table2(id INT,row0 text,row1 text,row2 text)。我在表1上有一些数据,我将其迁移到表2(id->id,a->row0,b->row1,c->row2)。现在,我想检查是否所有数据都已迁移,字段是否都正常。我使用这个select来查找错误的Id值,但是我不知道optimus如何找出哪些列是不正确的,例如,我有记录表1(1,hel,l,o)和记录表2(1,he,null,o)。我想知道a/row0和b/row1列是错误的在MySQL中获取不同的列,mysql,comparison,Mysql,Comparison,假设我有一个表Table1(id INT,a text,b text,c text)和Table2(id INT,row0 text,row1 text,row2 text)。我在表1上有一些数据,我将其迁移到表2(id->id,a->row0,b->row1,c->row2)。现在,我想检查是否所有数据都已迁移,字段是否都正常。我使用这个select来查找错误的Id值,但是我不知道optimus如何找出哪些列是不正确的,例如,我有记录表1(1,hel,l,o)和记录表2(1,he,null,o
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)
我想这已经足够了:
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 )
这段代码没有像预期的那样工作,因为它给了我所有的列,而不仅仅是那些不相同的列,这就是我不知道如何获取的原因。最初的查询只获取
id
s。在执行sql查询时,无法获得不同的列数。任何查询都会返回相同数量的列。因此,如果您只需要记录id,您可以从选择部分中删除其他字段。