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
您最好在查询时只计算值。在 table 上定义一个 identity
列,比如 CommentId
和 运行 查询,例如:
select id, comment,
row_number() over (partition by comment order by CommentId) as SeqId
from t;
这种方法的优点在于 ID 始终是顺序的,您没有重复的机会,插入时不必锁定 table,并且顺序 ID 有效即使是更新和删除。
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
您最好在查询时只计算值。在 table 上定义一个 identity
列,比如 CommentId
和 运行 查询,例如:
select id, comment,
row_number() over (partition by comment order by CommentId) as SeqId
from t;
这种方法的优点在于 ID 始终是顺序的,您没有重复的机会,插入时不必锁定 table,并且顺序 ID 有效即使是更新和删除。