我有两个看起来像这样的表:
('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
Run Code Online (Sandbox Code Playgroud)
应该注意的ROLE是,ROLE_NUM在ROLE_INDEX表格中加入了.
我正在尝试编写一个修改查询,我可以从中传递一个字符串ROLE_NAME(例如'Follow Up','Outbound')等,并且它的关联ROLE_NUM将被放入' ROLE'列.
我尝试使用以下查询来完成此操作,作为测试;
INSERT INTO master_eod ( sha1_hex, role )
VALUES ('ef03ff03',(SELECT role_num FROM role_index WHERE role_name='Follow Up'));
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误: 查询输入必须包含至少一个表或查询.
但是,如果我把它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' ;
Run Code Online (Sandbox Code Playgroud)
请注意,您必须确保这样的查询(SELECT单独)只返回一行,否则您最终会一次性插入多行,每个找到一个role_num(可能是也可能不需要).