SQL 为多个最大 ID 插入查询

SQL Insert Query For Multiple Max IDs

Table w:

|ID|Comment|SeqID|
|1 |bajg   | 1   |
|1 |2423   | 2   |
|2 |ref    | 1   |
|2 |comment| 2   |
|2 |juk    | 3   |
|3 |efef   | 1   |
|4 | hy    | 1   |
|4 | 6u    | 2   |

如何为新的 SeqID(SeqID 增加 1)的每个 ID 插入标准的新评论

以下查询得到最高的 SeqID:

Select *
From w
Where SEQID = 
(select max(seqid)
from w)

Table w:

|2 |juk    | 3   |

预期结果 Table w:

|ID|Comment|SeqID|
|1 |sqc    | 3   |
|2 |sqc    | 4   |
|3 |sqc    | 2   |
|4 |sqc    | 3   |

我是否必须使用下面的方法将我想要的所有值(新注释作为 sqc)插入到 table 中,还是有更快的方法?

INSERT INTO table_name
 VALUES (value1,value2,value3,...);

试试这个:

INSERT INTO mytable (ID, Comment, SeqID)
SELECT ID, 'sqc', MAX(SeqID) + 1
FROM mytable
GROUP BY ID

Demo here

您最好在查询时只计算值。在 table 上定义一个 identity 列,比如 CommentId 和 运行 查询,例如:

select id, comment,
       row_number() over (partition by comment order by CommentId) as SeqId
from t;

这种方法的优点在于 ID 始终是顺序的,您没有重复的机会,插入时不必锁定 table,并且顺序 ID 有效即使是更新和删除。