【问题标题】:opposite of insert into - removing duplicates与插入相反 - 删除重复项
【发布时间】:2023-03-27 21:45:01
【问题描述】:

我对 Sql 很陌生,所以请多多包涵。我已经运行了以下查询:

INSERT INTO adhoc_dt.`table` (id, name) VALUES(53098974, 'John');

但是,我偶然运行了两次。我想删除重复项。怎么可能?

我试过了

 INSERT INTO adhoc_dt.`table` (id, name) VALUES(53098974, 'John');

但得到一个错误:

SQL ERROR [1064][42000]:您的 SQL 语法有错误;查看 与您的 MySQL 服务器版本相对应的手册 在

附近使用的语法

【问题讨论】:

  • 确切的错误是什么?此外,如果 id 是唯一键或主键,则无需担心重复。
  • SQL 只有 3 种方法来操作表 INSERT、UPDATE 和 DELETE,但是如果您无法唯一标识行(auto_increment id 或时间戳很有用),则在删除时会遇到问题。你有唯一的行标识符吗?

标签: mysql sql dbeaver


【解决方案1】:

如果您的表名包含保留字的特殊字符,那么您应该用反引号将表名括起来:

 `table`

但是看你的问题,表名似乎:

`adhoc_dt.`table` 

在这种情况下,删除的正确语法是:

DELETE FROM  adhoc_dt.`table`
WHERE id =  53098974 AND name =  'JOHN'

但是通过这种方式,您删除所有行:

 id =  53098974 AND name =  'JOHN'

【讨论】:

    【解决方案2】:

    您必须按照步骤操作

    • 截断表
    • 对 ID 应用唯一约束
    • 运行插入脚本

    【讨论】:

    • 我们如何做到这一点?由于这会在接缝时产生更多问题,因此无法回答任何问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    相关资源
    最近更新 更多