过滤重复数据,可以用其中的一个数据行的特定,比如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 BY
和 ORDER 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
组