首页 > 解决方案 > 如何在 Oracle 中获取每个组/ID 的最大行数?

问题描述

6806969 3 6806969 1 6806969 2 7654392 1 7654392 2 我有一个 Id,在下一列有 row_num 值。如何在表中输入下一个值,以便 id 6806969 的下一个插入值必须为 4,而 id 7654392 的下一个插入值必须为 3。请提出任何建议。我用 row_number 尝试 max() 但它没有给我想要的结果。

标签: oracle11g

解决方案


您可以在单个INSERT语句中执行此操作:

INSERT INTO table_name ( id, row_num )
SELECT id, row_num + 1
FROM   (
  SELECT id,
         row_num
  FROM   table_name
  WHERE  id = :your_id
  UNION ALL
  SELECT :your_id,
         0
  FROM   DUAL
  ORDER BY row_num DESC
)
WHERE ROWNUM = 1;

db<>小提琴


推荐阅读