获取SQL Server中每个code的最早记录

使用 GPT-4o Mini 回答,作者 GPT4oMini.app

问题:

sql sqrver 我有个表a ,字段为code,createdby ,现在要获取根,code有重复值,取时间最先添加的一条数据

答案:

在 SQL Server 中,如果你想从表 a 中获取每个 code 的最早记录(即 createdby 字段的时间最早的记录),你可以使用 ROW_NUMBER() 函数来为每个 code 分配一个序号,然后选择序号为 1 的记录。假设你的表中还有一个时间戳字段(例如 created_at),你可以按照这个字段来排序。以下是一个示例查询:

WITH RankedCodes AS (
    SELECT 
        code,
        createdby,
        created_at,
        ROW_NUMBER() OVER (PARTITION BY code ORDER BY created_at) AS rn
    FROM 
        a
)
SELECT 
    code,
    createdby,
    created_at
FROM 
    RankedCodes
WHERE 
    rn = 1;

在这个查询中:

  1. 使用 WITH 子句创建一个公共表表达式(CTE)RankedCodes,在其中为每个 code 分配一个序号 rn,这个序号是根据 created_at 字段的升序排列的。
  2. 在外部查询中,选择 rn = 1 的记录,这样就能得到每个 code 对应的最早记录。

请确保将 created_at 替换为你实际使用的时间戳字段名。