在查询 SQL 中查询

Posted

技术标签:

【中文标题】在查询 SQL 中查询【英文标题】:Query inside a query SQL 【发布时间】:2021-09-23 16:06:38 【问题描述】:

所以我正在尝试进行查询,我需要选择价格最高的前 5 名产品,然后从单价最低的前 5 名中选择前 3 名。

我目前有此查询的前 5 名

select top 5 * from Products order by UnitPrice desc

但我不知道如何进行另一个选择以选择单价最低的 3 个,有什么提示吗?我曾尝试在选择或子查询中寻找选择,但没有帮助,提前致谢。

【问题讨论】:

请标注数据库平台 【参考方案1】:

如果您希望第 3-5 行按UnitPrice 排序,您可以使用offset/fetch

select p.*
from products p
order by UnitPrice desc
offset 2 rows fetch first 3 rows only;

这是标准 SQL,SQL Server 也支持(SQL Server 是使用 top 的最常见的数据库)。

【讨论】:

感谢工作! @John 。 . .如果这回答了您的问题,您可以接受答案。【参考方案2】:

尝试嵌套查询。

select top 3 *
from (
  select top 5 * from Products order by UnitPrice desc
) a
order by UnitPrice;

结果将以相反的顺序出现,因此,如果输出顺序是必需的,则需要第二个嵌套语句。

【讨论】:

这会给我一个二阶语法错误 更正了查询。它缺少表别名。

以上是关于在查询 SQL 中查询的主要内容,如果未能解决你的问题,请参考以下文章

查询语言系列—JOIN 语句

在查询 SQL 中查询

如何查找MySQL中查询慢的SQL语句

sql子查询!基本 sql 查询中 ANY 运算符的问题。不知道为啥在我的查询中需要它以及它将如何工作?

如何在 SQL 中组合两个查询? (子查询)

在sql中对不相关嵌套查询的处理原则