【问题标题】:mysql select highest and lowest values with limit in one statementmysql在一个语句中选择具有限制的最高和最低值
【发布时间】:2018-07-23 19:28:54
【问题描述】:

我需要从列价格的表格产品中提取 5 个最高价格和 5 个最低价格。我以为我可以像下面这样在一个 stmt 中做两个选择,但我认为你不能,因为它是同一张桌子?我做过类似的 stmts,它可以工作,但使用不同的表。

SELECT products.* AS fullcount, (SELECT * FROM products ORDER BY price ASC LIMIT 5) AS highest, (SELECT * FROM products ORDER BY price DESC LIMIT 5) AS lowest FROM products

我做错了什么还是应该使用不同的方法?

【问题讨论】:

  • “我做错了什么”。 SELECT 只能有标量值。您正试图将 5 行插入您的 SELECT。你觉得怎么可能???

标签: mysql


【解决方案1】:

使用UNION 组合获得最高行和最低行的查询结果。

SELECT *
FROM (
    SELECT *
    FROM products
    ORDER BY price DESC
    LIMIT 5) x
UNION (
    SELECT *
    FROM products
    ORDER BY price ASC
    LIMIT 5
) y

【讨论】:

  • 我记得 - 我们已经去过那里了..“要将 ORDER BY 或 LIMIT 应用于单个 SELECT,请将子句放在括住 SELECT 的括号内”:-)
  • 谢谢。这仍然给我一个错误但是看起来它缺少选择子查询的别名。我已经添加了最高的 AS,它看起来给了我我想要的东西。 SELECT * FROM (SELECT * FROM products ORDER BY price DESC LIMIT 5) AS 最高 UNION (SELECT * FROM products ORDER BY price ASC LIMIT 5)
  • @gstlouis - 您不需要该子查询(作为派生表)。见第二个例子here
猜你喜欢
  • 2012-04-28
  • 2017-04-13
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
相关资源
最近更新 更多