如何从表中删除重复值 [重复]
Posted
技术标签:
【中文标题】如何从表中删除重复值 [重复]【英文标题】:How to Remove Duplicates Values from table [duplicate] 【发布时间】:2019-12-08 08:38:51 【问题描述】:我有一个包含三列 id、用户名和视频的 SQL 表,我需要一个 SQL 查询来删除所有重复项,谢谢
表SS链接https://ibb.co/wC4p7kS
【问题讨论】:
【参考方案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)
【讨论】:
以上是关于如何从表中删除重复值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章