如何比较2表和多列

gfttwv5a  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(168)

我正在尝试将多个列(如part、quantity和type)与另一个表进行比较。我尝试比较零件id没有问题,但当我想比较零件id与数量时,它会导致错误,如返回nothing。
下面的编码仅用于比较零件id。

INSERT INTO `table3` 
SELECT *
FROM   table1
WHERE  NOT EXISTS (SELECT *
                   FROM   table2
                   WHERE  table2.part = table1.part)

如何比较零件和数量以找到不匹配的记录。

mnemlml8

mnemlml81#

有两种解决方案-
1)

INSERT INTO `table3` 
    SELECT *
    FROM   table1
    WHERE  NOT EXISTS (SELECT *
                       FROM   table2
                       WHERE  table2.part = table1.part And table2.quantity=table1.quantity)
INSERT INTO table2 (part, quantity, type)
SELECT part, quantity, type
FROM table1
ON DUPLICATE KEY UPDATE quantity= VALUES(quantity), type= VALUES(type)
kyvafyod

kyvafyod2#

mysql中一个方便的方法是 in 对于元组:

INSERT INTO `table3` ( . . . )
    SELECT . . .
    FROM table1
    WHERE (part, quantity) NOT IN (SELECT part, quantity FROM table2);

更重要的是,在使用 insert . 这有助于防止插入数据时出现意外问题。

2wnc66cl

2wnc66cl3#

不确定这是否是最好的方法,但我会尝试在一组值或串联上使用空左连接。

select t1.*
from mytable1 as t1
left join mytable2 as t2 on t1.foo = t2.foo and t1.bar = t2.bar
where t1.id is null;

唯一需要注意的是,t1.id(和t2.id)被假定为主键-即,永远不能为null。上述操作的最终结果应该是t1中所有不能与t2中的行合并的行。

相关问题