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

PostgreSQL中如何基于item_id列生成递增行号incremental_id

你可以直接使用PostgreSQL内置的窗口函数row_number()生成按item_id排序的连续自增行号,修改后的查询如下:

SELECT 
    row_number() OVER (ORDER BY item_id) AS incremental_id,
    rating,
    item_id,
    user_id
FROM 
    (SELECT 
         (CASE
             WHEN "Review".food IS NOT NULL AND "Review".service IS NOT NULL
                 THEN ("Review".food + "Review".service) / 2
             ELSE COALESCE(service, COALESCE(food, NULL)) END) AS rating,
         "venueId" AS item_id,
         "userId" AS user_id
     FROM "Review") AS data
WHERE rating IS NOT NULL
  AND user_id IS NOT NULL
  AND item_id IS NOT NULL
ORDER BY item_id;

逻辑说明

row_number()是标准的窗口函数,会按照OVER子句中指定的排序规则,为每一行分配唯一的连续整数值,和你要求的incremental_id规则完全匹配。如果你的场景中存在相同item_id的行,且希望相同item_id对应同一个incremental_id,把row_number()替换为dense_rank()即可。

内容的提问来源于stack exchange,提问作者Yuriy Matviyuk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:15:02