INSERT INTO with VALUES 和 SELECT STATEMENT

Posted

技术标签:

【中文标题】INSERT INTO with VALUES 和 SELECT STATEMENT【英文标题】:INSERT INTO with VALUES and SELECT STATEMENT 【发布时间】:2014-07-07 03:39:22 【问题描述】:

需要帮助! 我有 2 张桌子:Employee (Per_Code, Per_Name, Dept_Name) | Task (Dest_ID, Destination, Salary) 作为数据源。 现在我再做一张桌子Employee_Salary (Per_Code, Per_Name, Dept_Name, Dest_ID, Destination, Date, Duration, Salary)

我的 SQL 语句:

INSERT INTO Employee_Salary (Per_Code, Per_Name, Dept_Name, Dest_ID, Destination, Date, Duration, Salary) 
VALUES (
'1001', 
(SELECT Per_Name FROM Employee WHERE Per_Code=1001), 
(SELECT Dept_Name FROM Employee WHERE Per_Code=1001), 
(SELECT Dest_ID FROM Task WHERE Destination="CityA"), 
'CityA', 
'2014-07-07', 
'3', 
(SELECT Salary FROM Task WHERE Destination="CityA")
);

但它说“查询输入必须包含至少一个表或查询”。难道我的 SQL 语句错了?请帮助我...任何人!

【问题讨论】:

是否有任何内部查询返回 null 值? 只显示错误信息。当我查看表格时,没有插入任何内容。 尝试在查询中使用硬编码值而不是SELECT,并检查它是否有效,然后单独执行内部SELECT 语句以查看其中是否有任何一个返回空值。 在 MS Access 中,日期应包含井号 (#),不应引用数值。根据您的工作地点," 引号很好。您应该使用参数。 【参考方案1】:

可能是这样的

INSERT INTO Employee_Salary 
       (Per_Code, Per_Name, Dept_Name, Dest_ID, Destination, Date, Duration, Salary) 
SELECT '1001',E.Per_Name,E.Dept_Name,T.Dest_ID,'CityA','2014-07-07','3',T.Salary 
From Employee E CROSS JOIN Task T 
WHERE E.Per_Code=1001 AND T.Destination='CityA'

或者:

INSERT INTO Employee_Salary 
       (Per_Code, Per_Name, Dept_Name, Dest_ID, Destination, Date, Duration, Salary) 
SELECT '1001',E.Per_Name,E.Dept_Name,T.Dest_ID,'CityA','2014-07-07','3',T.Salary 
From Employee E,Task T 
WHERE E.Per_Code=1001 AND T.Destination='CityA'

【讨论】:

我尝试使用您的第二个代码。它正在运行,但没有数据插入。 Source和Target的DataType是否匹配??首先通过硬编码尝试,然后逐列值...! 没有插入,因为任务表上的城市值尚不存在。对不起我的坏。非常感谢@Vignesh Kumar 嗨@Vignesh Kumar 请将'CityA'的双引号更改为单引号:) @SHEKHARSHETE 可能是单引号转双引号。

以上是关于INSERT INTO with VALUES 和 SELECT STATEMENT的主要内容,如果未能解决你的问题,请参考以下文章

结合 INSERT INTO 和 WITH/CTE

为啥使用 INSERT INTO VALUES 会出现“输入参数值”?

如何用insert into values插入多条数据

access SQL语句中 insert into

INSERT INTO WITH SELECT 和 WHERE(问题)

使用 Oracle Insert Into...Values 插入多个值