Sql 选择不同记录的优化方法

Sql 选择不同记录的优化方法,sql,hive,apache-spark-sql,Sql,Hive,Apache Spark Sql,我在配置单元中有一个包含23列的表,其中5列构成复合主键。 从表中选择所有不同记录的最佳优化方法是什么。使用group by语句和where语句,其中count1>=1这将根据复合键为您提供不同的记录 像 真正的问题是什么?您正在处理的问题是什么?问题是表中存在重复记录。我只想选择具有基于5个键的所有列的不同记录。因为我已经发布了我自己的解决方案,我相信-ve投票应该是+ve。但是我想在select语句中获得所有表列。group by就在5列Hanks@Dudu上,但我已经得到了解决方案。这与你

我在配置单元中有一个包含23列的表,其中5列构成复合主键。
从表中选择所有不同记录的最佳优化方法是什么。

使用group by语句和where语句,其中count1>=1这将根据复合键为您提供不同的记录


真正的问题是什么?您正在处理的问题是什么?问题是表中存在重复记录。我只想选择具有基于5个键的所有列的不同记录。因为我已经发布了我自己的解决方案,我相信-ve投票应该是+ve。但是我想在select语句中获得所有表列。group by就在5列Hanks@Dudu上,但我已经得到了解决方案。这与你给出的方法几乎相似。选择t1.*从select cbcih_bup_sty_clr_slsinv_snps_hist.*中,按glbl_sty_clr_hash_key划分的行数,wk_end_dtu hash_key,pln_ver_cd,pln_cc_id,prc_stat_cd作为db_plancsl.cbcih_bup_sty_clr_snps_hist的秩,其中epoc_id=148;=1488497 t1,秩=1;这是另一回事。我认为您只需要在5列上没有重复项的行。是的,您的解决方案只选择计数为1的行。
Select Col1,Col2,Col3,Col4,Col5,Count(1) from tablename group by Col1,Col2,Col3,Col4,Col5 having Count(1)>=1
select  *

from   (select  t.*
               ,count(*) over (partition by Col1,Col2,Col3,Col4,Col5) as cnt

        from    tablename t 
        ) t

where   t.cnt = 1
;