我有两个看起来像这样的表:
('MASTER_EOD' TABLE)
ID SHA1_HEX ROLE
----------------------------
1 ff34bb03 2
2 eef0a005 1
('ROLE_INDEX' TABLE)
ROLE_NUM ROLE_NAME
--------------------------
1 Welcome Calls
2 Follow Up
3 Outbound
需要注意的是
ROLE
加入 ROLE_NUM
在 ROLE_INDEX
table 。我正在尝试编写一个修改查询,我可以在其中传递来自
ROLE_NAME
的字符串(例如“跟进”、“出站”)等,并且与 ROLE_NUM
相关联将被放入' ROLE
' 柱子。作为测试,我尝试使用以下查询来完成此操作;
INSERT INTO master_eod ( sha1_hex, role )
VALUES ('ef03ff03',(SELECT role_num FROM role_index WHERE role_name='Follow Up'));
但我收到以下错误:
查询输入必须至少包含一个表或查询。
但是,如果我把
SELECT role_num FROM role_index WHERE role_name='Follow Up'
进入它自己的查询,它可以工作。同样,如果我整个 SELECT 部分具有原始值,例如 3 , 有用。我错过了什么?我想我可能需要以某种方式使用“INNER JOIN”,但我仍在学习 SQL 的基础知识,无法解决这个特定问题以及为什么 Access 会抛出它所做的错误。
最佳答案
尝试以 SQL 中最标准的方式执行此操作,使用 SELECT
作为INSERT
中的全部源而不仅仅是单列子查询:
INSERT INTO master_eod ( sha1_hex, role )
SELECT 'ef03ff03', role_num FROM role_index WHERE role_name='Follow Up' ;
请注意,您必须确保这样的查询(单独的
SELECT
)仅返回一行,否则您最终会一次插入多行,为每个找到的 role_num 插入一个行(这可能是也可能不是可取的) )。
关于sql - 使用 INSERT INTO 和 'SELECT' 来提供一些值而不是其他值(Access 2010),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757348/