目前,我正在尝试将另一列(如零件,数量和类型)与另一个表进行比较。我尝试了对零件ID进行比较而没有问题,但是当我想将零件ID与数量进行比较时,将导致诸如不返回任何内容的错误。 / p>
以下编码仅用于比较部件ID。
INSERT INTO `table3`
SELECT *
FROM table1
WHERE NOT EXISTS (SELECT *
FROM table2
WHERE table2.part = table1.part)"
所以我该如何比较零件和数量一起找到不匹配的记录。
谢谢!
答案 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);
时,您应该显式列出所有列。这有助于防止在插入数据时出现意外问题。