【发布时间】:2020-09-08 07:14:04
【问题描述】:
我有以下疑问:
INSERT INTO TableA (Col1, Col2, Col3)
OUTPUT @SomeData, INSERTED.ID, ID INTO TableB(SomeColumn, TableAID, ID)
SELECT Col1, Col2, Col3, ID
FROM TableC;
当我运行它时,我得到这个错误:
INSERT 语句的选择列表包含的项目多于插入列表。 SELECT 值的数量必须与 INSERT 列的数量相匹配。
这个错误是有道理的,但我不知道如何解决它。我想从TableC 中选择 4 列,但我只想将其中的三列(Col1、Col2、Col3)插入TableA。我选择列 ID 是因为我想将其插入到 TableB 的 ID 列中。有什么办法吗?
CREATE TABLE TableA
(
ID bigint identity
constraint PK_TableA_ID
primary key
Col1 int,
Col2 int,
Col3 int
)
CREATE TABLE TableB
(
ID [int] NOT NULL,
SomeColumn [int] NOT NULL,
TableAID [bigint] NOT NULL
);
CREATE TABLE TableC
(
ID [int] IDENTITY (1,1) NOT NULL,
Col1 [int],
Col2 [int],
Col3 [int],
);
【问题讨论】:
-
TableA和TableB的结构是什么?
-
“我想从 TableC 中选择 4 列,但我只想插入其中的 3 列” 你是
INSERTing 4 列而不是SELECTing他们。如果你想SELECT这些列,那么你应该把它们写在OUTPUT子句而不是SELECT语句中。
标签: sql sql-server