表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)
表w:
|2 |juk | 3 |
预期结果 表w:
|ID|Comment|SeqID|
|1 |sqc | 3 |
|2 |sqc | 4 |
|3 |sqc | 2 |
|4 |sqc | 3 |
我是否必须通过以下方式将所有值(新评论为sqc)插入表中,或者是否有更快的方法?
INSERT INTO table_name
VALUES (value1,value2,value3,...);
答案 0 :(得分:1)
试试这个:
INSERT INTO mytable (ID, Comment, SeqID)
SELECT ID, 'sqc', MAX(SeqID) + 1
FROM mytable
GROUP BY ID
答案 1 :(得分:0)
您最好只在查询时计算值。在表格中定义identity
列,例如CommentId
并运行如下查询:
select id, comment,
row_number() over (partition by comment order by CommentId) as SeqId
from t;
这种方法的好处是,id总是顺序的,你没有重复的机会,插入时不必锁定表,顺序id甚至可以用于更新和删除。