【发布时间】:2014-02-08 00:19:33
【问题描述】:
我有一个大约有 500k 行的表,我想删除重复项。首先我运行 select distinct 查看唯一行数:
select distinct f1, f2, f3, f4 from my_table;
它返回了大约 300k 行。
我想在另一个表中插入唯一行,所以我运行下一个查询:
insert into table_unique
(select * from table where exists
(select distinct f1, f2, f3, f4 from my_table)
)
但是这个查询会向我插入所有行,而不仅仅是唯一的行。看起来 select distinct 在子查询中有点奇怪。
谁能解释一下这种行为?
非常感谢。
【问题讨论】:
-
子查询中的
select distinct没有意义。in基本上已经删除了重复项。