You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中按id与reign分组获取唯一size的查询方案

解决方案

需求明确:为每个id和reign的组合,保留优先级最高的size值,优先级顺序为 large > medium > small,且不修改原表。

原表数据

idsizereign
1largeRiyadh
1smallRiyadh
2largeMakkah
2mediumMakkah
2smallJeddah
3mediumDammam

期望结果

idsizereign
1largeRiyadh
2largeMakkah
2smallJeddah
3mediumDammam

SQL 查询语句

SELECT id, size, reign
FROM (
    SELECT 
        id, 
        size, 
        reign,
        -- 按优先级给每个(id, reign)组内的size排序
        ROW_NUMBER() OVER (
            PARTITION BY id, reign 
            ORDER BY 
                CASE size 
                    WHEN 'large' THEN 1 
                    WHEN 'medium' THEN 2 
                    WHEN 'small' THEN 3 
                END ASC
        ) AS rn
    FROM your_table_name -- 替换为你的实际表名
) AS ranked
WHERE rn = 1;

逻辑说明

  1. PARTITION BY id, reign:将数据按id和reign分组,确保每个组合单独处理。
  2. ORDER BY CASE...:自定义排序规则,让large排第1,medium第2,small第3,这样每个组里优先级最高的size会被标记为rn=1。
  3. 外层筛选rn=1:只保留每个组里排名第一的记录,也就是优先级最高的size。

若需调整优先级顺序,修改CASE语句中的排序值即可。

内容的提问来源于stack exchange,提问作者Abdulrahman Alotaibi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:41:19