使用 Select 语句删除 MySQL 中的非唯一行
提供的查询语法
DELETE FROM posts where> 尝试从 posts 表中删除没有唯一 ID 的行。但是,此语法与 MySQL 5.0 不兼容。<p><strong>重写查询</strong></p><p>要使查询与 MySQL 5.0 兼容,应重写如下:</p> <p>`</p><pre class="brush:php;toolbar:false">从 id 所在的帖子中删除(<pre class="brush:php;toolbar:false">SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
)
`
理解修改后的查询
修改后的查询使用 IN 运算符将 posts 表的 id 列与子查询的结果集进行比较。该子查询检索在 posts 表中出现多次的行的 ID,表明 ID 不唯一。通过使用 IN 运算符,查询仅选择具有非唯一 ID 的行进行删除。
其他注意事项
正如答案参考中提到的,这是必不可少的需要注意的是,MySQL 不允许从同一查询中的子查询修改同一表。为了规避此限制,可以将查询分为两个单独的查询:一个用于标识要删除的行的 SELECT 查询,然后是一个用于执行删除的 DELETE 查询。或者,可以使用带有别名的嵌套子查询来允许在单个查询中进行删除。
以上是MySQL 5.0中如何高效删除非唯一行?的详细内容。更多信息请关注PHP中文网其他相关文章!