我有一个查询有很多人和订单标准。选择的一个领域是“价格”(元素价格)但我希望(在每一行中)所有选定元素的最大价格。
我尝试在select上包含MAX聚合函数,希望这将返回所需的值,但不过,价格和MAX(价格)返回相同的值。搜索MySql文档我找到了原因:
如果你在一个组中使用组功能 不包含GROUP BY的语句 子句,它相当于分组 在所有行上。
有没有办法解决这个问题?
提前致谢!
有一个类似的问题(但没有解决这个问题):find max value without aggregate operator in mysql
答案 0 :(得分:0)
也许您可以像这样使用存储过程:
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
答案 1 :(得分:0)
我没有试过这个,但如果你有一个子查询提取最高价格(所以你得到一行),然后用它进行交叉连接(笛卡尔积)。你应该得到你想要的东西。我不能保证这会有多快。
答案 2 :(得分:0)
你可以这样做:
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