如何根据指定的列获取每行的唯一记录?我使用了唯一的和不同的,并且在我杀死之前查询运行了一个多小时。在实际的查询中,我加入了另外5个表,每个表都有数百万行。
假设我有
ID | Name | Date1 | Date2
1 | Jen | 1/1/2011 | 1/1/2011
1 | Jen | 1/1/2011 | 1/1/2011
1 | Jen | 1/2/2011 | 1/3/2011
2 | Ann | 1/2/2011 | 1/3/2011
2 | Ann | 1/2/2011 | 1/3/2011
我如何获得:
ID | Name | Date1 | Date2
1 | Jen | 1/1/2011 | 1/1/2011
1 | Jen | 1/2/2011 | 1/3/2011
2 | Ann | 1/2/2011 | 1/3/2011
答案 0 :(得分:0)
您可以尝试对这些列使用group by子句来获得唯一的结果。它不是一个完美的解决方案,但可能有助于暂时解决您的问题。
答案 1 :(得分:0)
你的问题由两部分组成(如前所述) 1.性能问题 2.明显的问题
在评论中已经注意到性能问题的潜在原因! 到第二部分:
select distinct t.* from your_table t;
或者如果表格大 - 不同将需要进行大量的排序....
select c1, c2, ... <some other column(s)>
from your_table t1
where rowid in
(select max(rowid) from your_table t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 );
C1,C2,...你的重复列