我有一个包含三列 ID、用户名和视频的 SQL 表,我需要一个 SQL 查询来删除所有重复项,谢谢
表 SS 链接https://ibb.co/wC4p7kS
由于您的屏幕截图是 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)
例如),或者您可以选择使用的 ID 列表GROUP_CONCAT
(例如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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句