MySQL如何比较2表与多列

时间:2018-11-27 10:31:58

标签: php mysql sql mysqli

目前,我正在尝试将另一列(如零件,数量和类型)与另一个表进行比较。我尝试了对零件ID进行比较而没有问题,但是当我想将零件ID与数量进行比较时,将导致诸如不返回任何内容的错误。 / p>

以下编码仅用于比较部件ID。

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

所以我该如何比较零件和数量一起找到不匹配的记录。

谢谢!

3 个答案:

答案 0 :(得分:1)

有2种解决方案-

1)

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

2)

INSERT INTO table2 (part, quantity, type)
SELECT part, quantity, type
FROM table1
ON DUPLICATE KEY UPDATE quantity= VALUES(quantity), type= VALUES(type)

答案 1 :(得分:0)

不确定这是否是最好的方法,但是我很想尝试对一组值或串联进行null-left-join-例如

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中的行。

答案 2 :(得分:0)

MySQL中一个方便的方法是使用元组的function video(agent) { agent.add(`You are now being handled by the productivity intent`); const url = "https://reqres.in/api/users?page=2"; return request.get(url) .then(jsonBody => { var body = JSON.parse(jsonBody); agent.add(body.data[0].first_name) return Promise.resolve(agent); }) .catch(err => { console.error('Problem making network call', err); agent.add('Unable to get result'); return Promise.resolve(agent); }); }

in

更重要的是,使用INSERT INTO `table3` ( . . . ) SELECT . . . FROM table1 WHERE (part, quantity) NOT IN (SELECT part, quantity FROM table2); 时,您应该显式列出所有列。这有助于防止在插入数据时出现意外问题。