2

我有一个数据库。id - 是一个主键。

id color
1 green
2 red
3 pink
4 pink
5 red

如何删除 SQL 中的重复颜色?结果将是:

id color
1 green
2 red
3 pink
4

3 回答 3

3

为了从您的表中删除重复项,请尝试如下语句:

DELETE FROM my_table 
WHERE EXISTS (
  SELECT 1 FROM my_table t2
  WHERE my_table.color = t2.color
  AND my_table.id > t2.id
)

英文:删除所有my_table有另一条my_table相同颜色但ID较低的记录的记录。这将保留每个重复颜色具有最低 ID 的记录。

我建议在删除重复项后,您应该添加一个唯一约束,如LolCoder 此处所示

于 2012-07-22T12:03:42.757 回答
2

您必须使用DISTINCT以下方式查找不同的项目:

SELECT DISTINCT(color) FROM colors

如果要从表中删除重复的颜色,

ALTER IGNORE TABLE colors ADD UNIQUE KEY idx1(color); 
于 2012-07-22T11:30:54.310 回答
1

您可以使用DISTINCT()-statement 来实现这一点。例如:

$sql = "SELECT DISTINCT(color) FROM colors";

更多信息

DISTINCT 子句允许您从结果集中删除重复项。DISTINCT 子句只能与 select 语句一起使用。

资料来源:网络科技

于 2012-07-22T11:28:29.573 回答