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 VALUES 会出现“输入参数值”?