Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中获取不同的列_Mysql_Comparison - Fatal编程技术网

在MySQL中获取不同的列

在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

假设我有一个表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列是错误的

        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,您可以从
选择
部分中删除其他字段。