gpt4 book ai didi

database - 如何删除SQL中除一行以外的所有行

转载 作者:太空狗 更新时间:2023-10-30 01:58:26 26 4
gpt4 key购买 nike

我想删除除一行以外的所有行,但要与 PHP 结合使用。

我认为对于我的问题来说,这将是一个更简单的解决方案,即删除重复信息。

好吧...我刚刚意识到我已经做的是废话。

基本上我有一个表 (dev_discs),我想在“discReference”列中搜索重复项,然后删除除一个以外的所有项,从而留下剩余的一行。

是否有简单的查询来执行此操作?我在网上遇到过类似的情况,它们都很复杂……我认为这不是一个非常复杂的情况。

最佳答案

没有简单的方法,AFAIK。不过,使用 PHP 应该不会太困难(我认为您无法仅使用 SQL 轻松完成此操作)。

  1. 创建一个与原表结构相同的新表:

    创建表 dev_discs_noduplicates ( ...);

  2. 使用 GROUP 子句从原始表中获取所有非重复数据以消除重复数据:

    SELECT * FROM dev_discs WHERE 1 GROUP BY dupe_col1, dupe_col2;

  3. 迭代结果并将它们插入到新表中:

    插入 dev_discs_noduplicates ...;

  4. 删除旧表

    DROP TABLE dev_discs;

  5. 重命名新表:

    将表 dev_discs_nodulicates 重命名为 dev_discs;

[编辑]

由于@xanatos 正确地指出数据库中可能存在关系丢失,因此这里有一个涉及 SQL 和 PHP 的替代解决方案。

首先,获取唯一行:

SELECT id FROM dev_discs GROUP BY col1, col2;

将这些放在 PHP 数组中,将其分解并在删除查询中使用:

DELETE FROM dev_discs WHERE (id) NOT IN ( @arr );

这应该会解决所有可能的问题。

关于database - 如何删除SQL中除一行以外的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7371823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com