MySql中如何不分组获取字段的最大值
我有一个查询,其中有很多where和orders标准。select的一个字段是‘price’(元素价格),但我还希望(在每一行中)有所有所选元素的最大价格 我试图在select上包含MAX AGGRATE函数,希望它能返回所需的值,但除此之外,price和MAX(price)返回的值是相同的。搜索MySql文档,我找到了原因: 如果在中使用组函数 不包含GROUP BY的语句 子句,它相当于分组 在所有的行上 有没有办法解决这个问题 提前谢谢MySql中如何不分组获取字段的最大值,mysql,aggregate,Mysql,Aggregate,我有一个查询,其中有很多where和orders标准。select的一个字段是‘price’(元素价格),但我还希望(在每一行中)有所有所选元素的最大价格 我试图在select上包含MAX AGGRATE函数,希望它能返回所需的值,但除此之外,price和MAX(price)返回的值是相同的。搜索MySql文档,我找到了原因: 如果在中使用组函数 不包含GROUP BY的语句 子句,它相当于分组 在所有的行上 有没有办法解决这个问题 提前谢谢 有一个类似的问题(但没有解决这个问题):也许您可以使
有一个类似的问题(但没有解决这个问题):也许您可以使用这样一个存储过程:
CREATE PROCEDURE QueryWithMax ([parameter list if necessary])
BEGIN
-- Obtain the maximum price
DECLARE x INT UNSIGNED; -- change datatype if appropriate
SET x = SELECT
MAX(price)
FROM
...
WHERE
...
;
-- Now do your query
SELECT
price,
[other columns],
x AS MaxPrice
FROM
...
WHERE
...
GROUP BY
...
;
END
我没有尝试过这个方法,但是如果有一个子查询提取最大价格(因此得到一行),然后用它进行交叉连接(笛卡尔积)。你应该得到你想要的东西。我无法保证这会有多快。您可以这样做:
SELECT
id,
price,
(SELECT MAX(price) FROM your_table) AS max_price
FROM your_table
我不知道你为什么要在每一行返回那个值。。。我可能会在两个单独的查询中执行此操作,或者使用UNION ALL:
SELECT id, price FROM your_table
UNION ALL
SELECT NULL, MAX(price) FROM your_table
看起来子查询可以修复,但如果没有表模式,这没有什么可以猜测的,请更新问题将完整的表模式您希望表中的最大值(price)还是所选数据集中的最大值(price)?