sql - 使用 INSERT INTO 和 'SELECT' 来提供一些值而不是其他值(Access 2010)

标签 sql ms-access

我有两个看起来像这样的表:

('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_NUMROLE_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/

相关文章:

sql - 查询未产生期望的结果

sql - Getdate() 等效于 Jet/Access 数据库。需要上个月的记录

SQL 将行对转换为 MS ACCESS 数据库中的列

java - 库存管理系统、MySQL、Netbeans 上的更新按钮出现问题

java - 使用 JOOQ 返回通用插入中的 id

Access 中的 Regex VBA - 在两个字符串之间查找文本

sql - Delphi SQL 如何将数据添加到 MS Access 数据库表中的特定记录中

sql - Recordset.Update 数据库或对象是只读的

mysql - 信息技术背景下的查迪姆

Mysql 选择虚拟一列中的两列