我目前正在尝试创建一个只有三个位置的剧院位置表。我导入了非规范化数据,我试图用以下语句来规范这些数据:
insert into theater(`name`, email, address, phone)
select distinct theater, theater_email, theater_address, theater_phone
from denormalized_tickets;当我注释掉第一行并运行它时,我就得到了我想要的结果。

当我编写一个查询来查看戏剧表select * from theater;时,它会返回每12次重复的影院。

我该怎么解决这个问题?有什么东西我忽略了吗?
发布于 2022-09-01 18:28:38
正如上面的注释中所讨论的,每次执行INSERT都会创建新的行。如果您多次这样做,则每次可能会添加更多行。
Vasya建议创建一个唯一的索引来阻止使用相同值创建新行。这可能适用于给定的表,也可能不适用于给定的表。例如,如果希望允许多个行具有相同的值,怎么办?
另一件您可能想读到的东西是MySQL的替换语句。语法类似于INSERT,但是如果主键或唯一键的列中有重复,它首先删除旧行,然后插入新行。但是,如果您没有定义唯一的键,这不会有帮助,因为MySQL如何知道这是一个冲突?
https://stackoverflow.com/questions/73573328
复制相似问题