如何在 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 Server 中正确运行