如何在 MS Access 中向 SQL 查询添加自定义行?

Posted

技术标签:

【中文标题】如何在 MS Access 中向 SQL 查询添加自定义行?【英文标题】:How to add custom rows to an SQL query in MS Access? 【发布时间】:2015-06-23 14:08:41 【问题描述】:

我尝试使用 UNION 但我曾经收到此消息:

查询输入必须至少包含一个表或查询

我尝试的查询是:

SELECT NULL AS ID, NULL AS Item
  UNION 
    SELECT Items.ID AS ID, Items.Item as Item
    FROM Items 
    INNER JOIN People 
    ON Items.PID=People.PID
    WHERE People.Name='John';

两个 select 语句都可以独立运行。

【问题讨论】:

【参考方案1】:

使用Dual

SELECT NULL AS ID, NULL AS Item
FROM dual
UNION ALL
SELECT i.ID AS ID, i.Item AS Item
FROM Items i
INNER JOIN People p ON i.PID = p.PID
WHERE p.Name = 'John';

【讨论】:

我不相信 Access 有双表,但如果你从这里加入 HansUp 的答案:***.com/questions/7933518/… 那么它应该可以工作。 它确实在 Access 中使用了 DUAL...@Newd @Hituptony 你确定吗?你碰巧有一个引用它的链接吗? @Newd 你必须创建它,但它可以完成。 gpgonaccess.blogspot.com/2010/03/making-dual-table.html @Hituptony 我会继续点击我发布的链接并查看我提到的答案:-)【参考方案2】:

在 MS Access 中,您将需要使用 kludge。这可能有效:

SELECT TOP 1 NULL AS ID, NULL AS Item
FROM (SELECT TOP 1 *
      FROM ITEMS
      ORDER BY ID
     ) as i
UNION ALL
SELECT Items.ID AS ID, Items.Item as Item
FROM Items INNER JOIN
     People
     ON Items.PID = People.PID
WHERE People.Name = 'John';

子查询的唯一目的是获取包含一行的表。请记住,MS Access 中的TOP 1 如果存在平局,则可以返回多行。

【讨论】:

加 1 用于教我一个新词“kludge”...和一个很好的答案 ofc【参考方案3】:

您需要指定要从哪个表中获取数据。试试这个:

SELECT NULL AS ID, NULL AS Item
FROM Items INNER JOIN People ON Items.PID=People.PID
UNION 
SELECT Items.ID AS ID, Items.Item as Item
FROM Items INNER JOIN People ON Items.PID=People.PID
WHERE People.Name='John';

【讨论】:

【参考方案4】:

也许如果联合查询顺序更改为从形成的查询开始,然后是空查询:

SELECT Items.ID AS ID, Items.Item as Item
FROM Items 
INNER JOIN People 
ON Items.PID=People.PID
WHERE People.Name='John'

union 

SELECT NULL AS ID, NULL AS Item

【讨论】:

以上是关于如何在 MS Access 中向 SQL 查询添加自定义行?的主要内容,如果未能解决你的问题,请参考以下文章

MS ACCESS - 如何使用查询生成表添加主键

如何在查询中向 SQL 结果添加字符串 [关闭]

如何在 MS Access 2007 中获取 sql 查询

如何使 MS Access 直通查询在 SQL Server 中正确运行

如何使用 VBA 动态 SQL SELECT 语句调用 MS Access 参数查询

如何将 MS Access“IIF”查询转换为 Sql Server 查询?