gpt4 book ai didi

mysql - 使用 select 插入时重复记录

转载 作者:行者123 更新时间:2023-11-30 00:00:46 25 4
gpt4 key购买 nike

以下代码会创建三重记录,但如果我删除事务命令,它会按预期工作,为 in 子句中的每个数字仅插入 1 条记录:

insert into table1(id2, col) 
select col2, 1
from table2
where col2 in (1, 2, 3) and col2 not in (select id2 from table1 where col = 1)
group by col2;

这是 MySQL 的错误吗?相同的语句不会导致 MSSQL Server 上出现重复记录。
是否可以在不重复记录的情况下运行此查询或带有事务的类似查询?

查询前的示例数据:

table1
id | id2 | col
==============
-- empty --

table2
id | col2
==============
1 | 1
2 | 1
3 | 1
4 | 2
5 | 2
6 | 2
7 | 3
8 | 3
9 | 3

查询后的示例数据:

table1 (* duplicated records I don't want)
id | id2 | col
==============
1 | 1 | 1
2 | 1 | 1 *
3 | 1 | 1 *
4 | 2 | 1
5 | 2 | 1 *
6 | 2 | 1 *
7 | 3 | 1
8 | 3 | 1 *
9 | 3 | 1 *

table2 keeps the same

观察:

  • table2 具有重复的值。
  • 单独运行选择查询仅返回所需的结果(无重复)。
  • 似乎 insert into() select 忽略了 distinctgroup by 子句。

编辑:

我发现出现此问题的原因是 MySQL 忽略了 INSERT INTO ... SELECT 查询上的 GROUP BY 子句。有没有办法在插入时对这些记录进行分组?

最佳答案

我发现出现此问题的原因是 MySQL 忽略了 INSERT INTO ... SELECT 查询上的 GROUP BY 子句。

不知道确切原因,但如果我使用不使用 GROUP BYDISTICT 的查询,它就可以工作。

关于mysql - 使用 select 插入时重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25048370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com