根据SQL中的属性删除重复行

时间:2019-01-10 17:39:08

标签: mysql sql sas

所以我是SAS用户,现在正在为新工作使用SQL。

在SAS中,我能够运行此查询来删除重复项:

proc sort data = customer_data
nodupkey out = customer_data_no_dups;
by Cus_ID;
run;

我想要可以在SQL中获得相同结果的东西

enter image description here

列表太大,无法在Excel中完成

预先感谢

3 个答案:

答案 0 :(得分:1)

您想要的结果表明我很简单:

select CUS_ID, First, Last, min(Item) 
from table t
group by CUS_ID, First, Last; 

答案 1 :(得分:0)

我认为在旧版本的MySQL中,更准确的等效项是:

select t.*
from t
where t.item = (select min(t2.item)
                from t t2
                where t2.cus_id = t.cus_id
               );

这使您可以从具有最少项目的行中获取尽可能多的列。

与查询的不同之处在于,如果客户可以有重复的商品,则将获得重复的行。

在MySQL 8+中,您也可以使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by cus_id order by item) as seqnum
      from t
     ) t
where seqnum = 1;

答案 2 :(得分:0)

当重复的键和非重复的卫星数据(这些项#s)时,结果集中结尾的行将是任意的。 Proc SQL具有用于自动合并汇总统计信息的简洁功能,未记录的monotonic()函数可用于离散化重复的键行(包括完全相同的行),然后可将其用于{ {1}}子句。

此示例代码使用重复的键以及一些相同的行创建一些数据。

having