gpt4 book ai didi

mysql - SQL插入选择自动增量变量

转载 作者:行者123 更新时间:2023-11-29 02:13:54 26 4
gpt4 key购买 nike

我是 SQL 的新手。请多多包涵。谢谢

我想将记录插入表名 t1 中的一些字段这些记录来自临时表 @t2

create table t1
(
transid varchar(15) not null primary key,
content varchar(1000),
userid int not null,
dtcreate datetime not null,
)

DECLARE @seqno INT = 1;

DECLARE @t2 TABLE ( userid INT, content VARCHAR(1000), dtcreate DATETIME)

假设我在 @t2 中有 10 条记录

我想将@t2(临时表)中的所有记录插入到t1中

INSERT INTO t1 (transid,content,userid,dtcreate)
SELECT (CONVERT(VARCHAR(10), dtcreate, 112)+RIGHT('0000'+CONVERT(VARCHAR, (
@seqno =+ 1)), 5)) , content, userid, dtcreate FROM @t2

这是 @seqno =+ 1 不允许我这样做的地方。如果我想要这样的东西,我该怎么做?多谢你们。我是 super 新手。

最佳答案

好像ROW_NUMBER可以做到这一点。

一个抽象的例子:

DECLARE @T1 TABLE (ID INT)
DECLARE @T2 TABLE (ID INT, VALUE INT)
INSERT INTO @T1 VALUES (1), (4)
INSERT INTO @T2 SELECT *, (ROW_NUMBER() OVER(ORDER BY ID))+100 FROM @T1
SELECT * FROM @T1
SELECT * FROM @T2

将其应用于您的代码:

declare @t1 table
(
transid varchar(15) not null primary key,
content varchar(1000),
userid int not null,
dtcreate datetime not null
)

DECLARE @t2 TABLE ( userid INT, content VARCHAR(1000), dtcreate DATETIME)

INSERT INTO @t1 (transid,content,userid,dtcreate)
SELECT (CONVERT(VARCHAR(10), dtcreate, 112)+RIGHT('0000'+CONVERT(VARCHAR, (
row_number() over(order by userid))+100), 5)) , content, userid, dtcreate FROM @t2

我认识到的一个问题是您不能省略 ORDER BY,希望这不是问题。

关于mysql - SQL插入选择自动增量变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44106570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com