如何将这两个查询组合成一个查询?

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

如果这不是解决方案,是否正在发生一些您可以显示的错误?

【讨论】:

以上是关于如何将这两个查询组合成一个查询?的主要内容,如果未能解决你的问题,请参考以下文章

将多个子查询组合成一个查询

如何获取两个 sql 查询并将它们组合成一个查询

如何获取两个SQL查询并将它们组合成一个查询

如何组合两个查询并将数据放入一行?

如何将来自不同模型的两个查询集组合成一个?

R ggplot - 如何将这两个直方图组合成一个整体直方图进行比较?