根据另一个表中的现有值在MySQL表中插入记录
我正在使用MySQL。我想在表中插入一些记录,前提是它们不存在 存在于另一个表中。所以我想做这样的事情:根据另一个表中的现有值在MySQL表中插入记录,mysql,insert,concat,Mysql,Insert,Concat,我正在使用MySQL。我想在表中插入一些记录,前提是它们不存在 存在于另一个表中。所以我想做这样的事情: INSERT INTO sales (name, id) SELECT name, id FROM sales_h WHERE name AND id NOT IN (SELECT name, id FROM T_sales); 问题是MySQL不允许这种语法与where子句有关。。。我试着用CONCAT,但没有结果 有什么线索吗???您可以查看MySql的ON DUPLICATE子句
INSERT INTO sales (name, id)
SELECT name, id FROM sales_h
WHERE name AND id NOT IN (SELECT name, id FROM T_sales);
问题是MySQL不允许这种语法与where子句有关。。。我试着用CONCAT,但没有结果
有什么线索吗???您可以查看MySql的ON DUPLICATE子句
您可以查看MySql的ON DUPLICATE子句
你不能说姓名和身份证不在。。。你需要为每一个单独的条款。但是您是否将id作为表T_sales中的主键?如果是这样,那么这就是您需要检查的全部内容,例如:
INSERT INTO sales (name, id)
(SELECT name, id FROM sales_h WHERE id NOT IN (SELECT id FROM T_sales));
编辑
嗯,从其他人的回答来看,最好不要理我,因为他们似乎知道得更多:-你不能说姓名和身份证不在哪里。。。你需要为每一个单独的条款。但是您是否将id作为表T_sales中的主键?如果是这样,那么这就是您需要检查的全部内容,例如:
INSERT INTO sales (name, id)
(SELECT name, id FROM sales_h WHERE id NOT IN (SELECT id FROM T_sales));
INSERT
INTO sales (name, id)
SELECT name, id
FROM sales_h
WHERE (name, id) NOT IN
(
SELECT name, id
FROM t_sales
)
编辑
嗯,从其他人的回答来看,最好不要理我,因为他们似乎知道得更多:-问题在于你在哪里
INSERT
INTO sales (name, id)
SELECT name, id
FROM sales_h
WHERE (name, id) NOT IN
(
SELECT name, id
FROM t_sales
)
它不像你那样读书。您将其读取为其中name和id不在…,而它读取为其中name不为null,id不在。。。。。。如果你明白我的意思
更改为:ROWname,id不在SELECT name中,id来自T_sales 问题在于你的位置 它不像你那样读书。您将其读取为其中name和id不在…,而它读取为其中name不为null,id不在。。。。。。如果你明白我的意思 更改为:ROWname,id不在SELECT name中,id来自T_sales 你试过这个方法吗 你试过这个方法吗
MySQL允许您像变量一样使用元组: 这是你的声明:
INSERT INTO sales (name, id)
SELECT name, id FROM sales_h
WHERE name AND id NOT IN (SELECT name, id FROM T_sales);
问题是名称和Id。将其转换为元组:
INSERT INTO sales (name, id)
SELECT name, id FROM sales_h
WHERE (name, id) NOT IN (SELECT name, id FROM T_sales);
就我个人而言,我不喜欢这样做有两个原因:tuple as variable在其他RDBMS上不起作用或工作方式不同,IN在许多情况下往往表现不佳,因此我喜欢养成不在中使用的习惯
正如jhonny-d-cano-leftware所说,我已经对他进行了升级,我会在不存在的地方使用:
INSERT INTO sales (name, id)
SELECT name, id FROM sales_h a
WHERE not exists (
SELECT *
FROM T_sales b
where b.id = a.id and b.name = a.name);
MySQL允许您像变量一样使用元组: 这是你的声明:
INSERT INTO sales (name, id)
SELECT name, id FROM sales_h
WHERE name AND id NOT IN (SELECT name, id FROM T_sales);
问题是名称和Id。将其转换为元组:
INSERT INTO sales (name, id)
SELECT name, id FROM sales_h
WHERE (name, id) NOT IN (SELECT name, id FROM T_sales);
就我个人而言,我不喜欢这样做有两个原因:tuple as variable在其他RDBMS上不起作用或工作方式不同,IN在许多情况下往往表现不佳,因此我喜欢养成不在中使用的习惯
正如jhonny-d-cano-leftware所说,我已经对他进行了升级,我会在不存在的地方使用:
INSERT INTO sales (name, id)
SELECT name, id FROM sales_h a
WHERE not exists (
SELECT *
FROM T_sales b
where b.id = a.id and b.name = a.name);