【发布时间】:2019-12-08 08:38:51
【问题描述】:
【问题讨论】:
【问题讨论】:
由于您的屏幕截图是 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)
【讨论】: