将常量行结果添加到SQL查询 - MS Access

Stu*_*ork 6 sql ms-access dummy-data

假设我有一个表"tblItems":

*ID*    |     *Name*
1       |   First Item
2       |  Second Item
Run Code Online (Sandbox Code Playgroud)

我希望将其填入表格的下拉列表中.我该如何添加一行:

ALL     |    SHOW ALL
Run Code Online (Sandbox Code Playgroud)

成为

*ID*    |     *Name*
1       |   First Item
2       |  Second Item
ALL     |    SHOW ALL
Run Code Online (Sandbox Code Playgroud)

一个查询放在Row Source组合框中?我无法找到Access语法来执行此操作..

AFAIK,我需要类似的语法

SELECT ID, Name FROM tblItems
UNION
SELECT 0, "All" FROM SOME.SYSTEM.DUMMY.TABLE
Run Code Online (Sandbox Code Playgroud)

我找不到的是那个虚拟表的Access'版本.我真的不想有一个单独的表只是为一个表单存储一行......但是从我一直在阅读的内容我可能不得不这样做.

Jer*_*acs 8

你可以这样做:

select ID, Name
from tblItems
union all
select 'ALL', 'SHOW ALL'
Run Code Online (Sandbox Code Playgroud)

如果你一直希望它显示在底部,你必须要复杂一点.

根据评论,我意识到Access不支持SELECT没有FROM子句的语句,这很烦人.解决方法是创建一个表tblAll(语法可能需要修改):

create table tblAll(ID varchar(15), Name varchar(30));
insert into tblAll(ID, Name) values ('ALL', 'SHOW ALL');
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

select ID, Name
from tblAll
union all
select str(ID) as ID, Name
from tblItems
Run Code Online (Sandbox Code Playgroud)

  • @Remou,所以如果不需要创建新表,我们可以期待您提供有效的答案吗?您提到这是一个标准问题,解决方案是什么? (2认同)

小智 7

我所做的是使用一个SELECT TOP 1语句并使用现有的表名,所以它看起来像这样:

SELECT ID, Name FROM tblItems
UNION
SELECT TOP 1 'ALL', 'SHOW ALL' FROM tblItems
Run Code Online (Sandbox Code Playgroud)

这将为您提供单行以及现有表格中的选择.您可以使用所需的任何表格TOP 1.