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

如何在MS Access中将自定义行添加到SQL查询?,sql,ms-access,Sql,Ms Access,我尝试使用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语句都独立运行O

我尝试使用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语句都独立运行OK

使用
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';

您需要指定数据来自哪个表。试试这个:

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';

在MS Access中,您将需要使用乱码。这可能会奏效:

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
可以返回多行。

如果联合查询顺序更改为以形成的查询开始,然后更改为空查询,则可能会:

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

我不相信Access有双表,不过如果你把你的答案和HansUp的从这里来的答案结合起来:那么它应该可以工作。它确实在Access中使用了双表@Newd@Hituptony你确定吗?您是否有引用该链接的链接?@Newd您必须创建它,但它是可以完成的@Hituptony我会继续点击我发布的链接,查看我提到的答案:-)加1,教我一个新单词“kludge”。。。这是一个很好的答案