sql语句:根据某一个字段重复,只取list中第一条数据

如下图数据,我们业务需要,只取每个dumpingSite一样的第一条数据:

写法:

select s.*  
from ( 
    select *, row_number() over (partition by [重复字段] order by [排序字段]) as group_idx  
    from table_name
) s
where s.group_idx = 1

说明:开窗函数: over (partition by order by)

Oracle数据库是支持这种写法的,mysql的话要8版本或以上才支持

PARTITION 中文是分割的意思,ORDER 是排序的意思,把一组数据按照制定的字段进行分割成各种组,然后组内按照某个字段排序

简而言之就是

分组后对组内数据排序

SQL,去重并取第一条可以使用窗口函数和子查询的方式来实现。以下是两种常见的方法: 方法一:使用ROW_NUMBER()函数和子查询 可以使用ROW_NUMBER()函数和子查询来去重,并且只返回每个组的第一条记录。首先,使用ROW_NUMBER()函数对记录进行编号,按照指定的排序条件进行排序。然后,在外部查询,选择行号为1的记录即可。 示例: ``` SELECT column1, column2 FROM ( SELECT column1, column2, ROW_NUMBER() OVER (PARTITION BY column1 ORDER BY column2 ASC) AS rn FROM your_table ) t WHERE rn = 1; ``` 在上面的示例,your_table是你的表名,column1和column2是你要去重和排序的列名。通过使用ROW_NUMBER()函数,我们对每个分组的记录进行编号,并按照column2列的升序进行排序。然后,外部查询选择行号为1的记录,即每个组的第一条记录。 方法二:使用DISTINCT和子查询 另一种方法是使用DISTINCT和子查询来去重,并且只返回每个组的第一条记录。首先,在子查询使用DISTINCT来去重,然后在外部查询使用LIMIT或TOP关键字来限制只返回第一条记录。 示例: ``` SELECT DISTINCT column1, column2 FROM your_table WHERE (column1, column2) IN ( SELECT column1, MIN(column2) FROM your_table GROUP BY column1 ); ``` 在上面的示例,your_table是你的表名,column1和column2是你要去重和排序的列名。在子查询,我们使用GROUP BY对column1进行分组,并取每个组column2的最小值。然后,在外部查询,我们使用DISTINCT来去除重复的记录,并使用WHERE子句过滤只选择每个组第一条记录。 以上是两种常见的方法,你可以根据具体的需求选择适合的方法来实现SQL去重取第一条的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [19、SQL Server / Oracle:分组排序取头条记录(搜索结果重复记录仅取第一条)](https://blog.csdn.net/xushaozhang/article/details/56679009)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值