如何将这两个查询组合成一个查询?
Posted
技术标签:
【中文标题】如何将这两个查询组合成一个查询?【英文标题】:How to combine these two queries into a single one? 【发布时间】:2018-09-11 19:07:15 【问题描述】:我有两个有效地使用相同数据的查询。我正在尝试将它们合二为一,这样我可以节省空间,但我遇到了问题。 我正在尝试从第二个查询中选择。我会在我的尝试中展示。
查询 A:
SELECT TOP 5 ([Parent]), [Game ID]
FROM Games
WHERE [Parent] = 'Zelda'
ORDER BY [Game ID] DESC;
查询 B:
SELECT QueryA.[Parent], QueryA.[Game ID]
FROM QueryA
WHERE Mid(QueryA.[Game ID], 5) NOT IN (
SELECT MAX(Mid(Game.[Game ID], 5))
FROM Game
);
这些查询单独工作,但似乎可以将它们组合成一个查询。我试图弄清楚如何。我以为我可以做类似的事情
SELECT QueryA.[Parent], QueryA.[Game ID]
FROM (
SELECT TOP 5 ([Parent]), [Game ID]
FROM Games
WHERE [Parent] = 'Zelda'
ORDER BY [Game ID] DESC
)
WHERE Mid(QueryA.[Game ID], 5) NOT IN (
SELECT MAX(Mid(Game.[Game ID], 5))
FROM Game
);
但事实并非如此。看起来很基本,但我正在努力解决。
【问题讨论】:
为什么需要两个查询。您可以将外部查询的WHERE
条件添加到内部查询中吗?
【参考方案1】:
您的问题可能是您忘记了子查询的别名。试试这个:
SELECT QueryA.[Parent],
QueryA.[Game ID]
FROM
(SELECT TOP 5 ([Parent]), [Game ID]
FROM Games
WHERE [Parent] = 'Zelda'
ORDER BY [Game ID] DESC) as QueryA
WHERE Mid(QueryA.[Game ID], 5) NOT IN
(SELECT MAX(Mid(Game.[Game ID], 5))
FROM Game);
如果这不是解决方案,是否正在发生一些您可以显示的错误?
【讨论】:
以上是关于如何将这两个查询组合成一个查询?的主要内容,如果未能解决你的问题,请参考以下文章