【问题标题】:How to Remove Duplicates Values from table [duplicate]如何从表中删除重复值 [重复]
【发布时间】:2019-12-08 08:38:51
【问题描述】:

我有一个包含三列 id、用户名和视频的 SQL 表,我需要一个 SQL 查询来删除所有重复项,谢谢

表SS链接https://ibb.co/wC4p7kS

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    由于您的屏幕截图是 phpMyAdmin,我假设我们在这里讨论的是 MySQL(在提问时,这是有用的信息,因为各种 SQL 方言有不同的工具可以使用)。

    如果您的结果中不需要id,您可以使用DISTINCT

    SELECT
      DISTINCT
        Username,
        Video
    FROM
      YourTableName
    

    这会返回一个不同行的列表(这意味着它会考虑所有列来确定什么是不同的,这就是为什么在此处包含 id 不起作用的原因)。

    如果您确实需要返回 ID,则必须使用 GROUP BY

    SELECT
      MIN(id) AS id,
      Username,
      Video
    FROM
      YourTableName
    GROUP BY
      Username,
      Video
    

    显然,您可以从那里选择一个不同的 ID(例如MAX(id)),或者您可以使用GROUP_CONCAT 选择一个 ID 列表(例如GROUP_CONCAT(id ORDER BY id ASC) AS id,默认情况下会给您一个逗号分隔的列表除非你改变它)

    也可以使用窗口/分析函数来完成,这可以是非常大表中的值。

    注意:当您说“删除所有重复项”时,我假设您的意思是您的结果。如果你的意思是从表中删除它们,你可以使用这个:

    DELETE FROM
      YourTableName
    WHERE
      id NOT IN(SELECT MIN(id) FROM YourTableName GROUP BY Username,Video)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 2019-06-12
      相关资源
      最近更新 更多