首页 > 数据库 > mysql教程 > 如何根据 Select 语句的结果从 MySQL 表中删除行?

如何根据 Select 语句的结果从 MySQL 表中删除行?

Barbara Streisand
发布: 2024-12-26 14:25:10
原创
703 人浏览过

How to Delete Rows from a MySQL Table Based on a Select Statement's Results?

从 MySQL 中的 Select 语句中删除

问题:

如何从 MySQL 表中删除基于select 语句的结果?

代码 (MySQL 5.0):

DELETE FROM posts where>
登录后复制

问题:

上面的代码在 MySQL 5.0 中不起作用,您想要找到一个可行的解决方案。您的目标是删除没有唯一 ID 的行。

答案:

使用 IN:

在 MySQL 中,子查询返回结果集。要在 DELETE 语句中使用子查询的结果,您应该在 WHERE 子句中使用 IN 运算符而不是等号 (=)。

修改的代码:

DELETE FROM posts WHERE id IN (
    SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
)
登录后复制

额外注意事项:

  • 您不能通过同一查询中的子查询修改同一个表。
  • 您可以执行单独的 SELECT 和 DELETE 查询或使用嵌套子查询来实现所需的效果结果。
  • 另一种方法涉及使用连接,如建议的麦克尔:
DELETE FROM posts p1
WHERE p1.id = (
    SELECT p2.id 
    FROM posts p2
    WHERE p2.id = p1.id
    GROUP BY p2.id
    HAVING COUNT(p2.id) > 1
)
登录后复制

以上是如何根据 Select 语句的结果从 MySQL 表中删除行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板