我尝试使用查询
将表A中的数据插入表B.INSERT INTO tableB(Status, UserIn, TableBID, Name)
SELECT
'Active',
UserInput,
COALESCE(MAX(TableAID),0)+1,
Name
FROM
tableA
但是我收到了一个错误:
列名称无效' TableAID'。
这是我的TableA:
CREATE TABLE TableA
(
Status VARCHAR(10),
UserInput VARCHAR(25),
TableAID INT,
Name VARCHAR(32)
)
我的桌子
CREATE TABLE TableB
(
Status VARCHAR(1),
UserIn VARCHAR(25),
TableBID INT,
Name VARCHAR(32)
)
答案 0 :(得分:4)
您收到该错误是因为您正在从没有TableBID列的tableA中进行选择。据我所知,你试图获取max tableBID并为你从tableA插入的每一行增加一个,你可以尝试:
INSERT INTO tableB(Status,UserIn,TableBID,Name)
SELECT
'Active',
UserInput,
ROW_NUMBER() OVER (order by (select 1))+ (SELECT COALESCE(MAX(TableBID),0) FROM tableB ),
Name
FROM
tableA
对于从tableA插入的每一行, ROW_NUMBER() OVER (order by (select 1))
将从1开始返回递增的数字。
答案 1 :(得分:4)
我发现了两件事。对于Status
,您试图将5个字符的数据插入varchar(1)
列。也许您应该更改列长度或插入的数据。
其次,您在聚合函数MAX
旁边有多列而不使用GROUP BY
或OVER
。