【问题标题】:Change a SELECT statement to a DELETE [duplicate]将 SELECT 语句更改为 DELETE [重复]
【发布时间】:2013-10-06 11:16:07
【问题描述】:

在我的表中有很多重复的行。我有一个 SELECT 提供我要删除的数据,但我该怎么做?无论我尝试什么,都会出错。

SELECT *
  FROM tablename t
 WHERE NOT EXISTS (         
              SELECT 1
                FROM tablename t2
               WHERE t2.column = t.column
              HAVING COUNT(*) = 1
                     )

【问题讨论】:

  • select *改成delete...
  • P.S.,如果你有重复,那么你需要开始学习unique and primary keys
  • 是的,我试过了,但它显示错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在第 2 行的 't WHERE NOT EXISTS ( SELECT 1 FROM norma' 附近使用。顺便说一句。kollat​​ion 是 utf8mb4_bin
  • 什么版本的 MySQL?

标签: mysql sql


【解决方案1】:

只需将 'SELECT *' 更改为 'DELETE'

DELETE 
FROM tablename t
WHERE NOT EXISTS (         
              SELECT 1
              FROM tablename t2
              WHERE t2.column = t.column
              HAVING COUNT(*) = 1
              )

【讨论】:

  • 是的,我试过了,但它显示错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在第 2 行的 't WHERE NOT EXISTS ( SELECT 1 FROM norma' 附近使用。顺便说一句。kollat​​ion 是 utf8mb4_bin
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 2017-10-19
  • 1970-01-01
  • 2018-06-16
相关资源
最近更新 更多