sql 如何获取重复数据中的头一行

  过滤重复数据,可以用其中的一个数据行的特定,比如max(id)

select * from  agvlift where id in
            (
            select ranklift.id from
            (
            select ip, max(id) as id from  agvlift where ActiveState=1 group by ip
            ) as ranklift
            )

在 SQL 中,获取重复数据中的头一行(即每组重复数据中的第一条记录)也可以通过多种方法实现。这里假设你有一个表 employees,其中包含 id, name, 和 email 列,并且你想获取每个 email 重复的记录中的第一条记录。

方法 1: 使用 ROW_NUMBER() 窗口函数

ROW_NUMBER() 是一个非常强大的窗口函数,可以为每一行分配一个唯一的编号。你可以结合 PARTITION BYORDER BY 子句来确定每一组中的行顺序,然后选择每组的第一行。

假设你想根据 email 分组,并按 id 升序排列,获取每组的第一条记录:

 

Sql

深色版本

WITH RankedEmployees AS (
    SELECT
        id,
        name,
        email,
        ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
    FROM
        employees
)
SELECT
    id,
    name,
    email
FROM
    RankedEmployees
WHERE
    rn = 1;

在这个例子中:

  • ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn 为每个 email 组内的记录按 id 顺序分配行号。
  • WHERE rn = 1 选择每个 email 组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值