MySql中如何不分组获取字段的最大值

MySql中如何不分组获取字段的最大值,mysql,aggregate,Mysql,Aggregate,我有一个查询,其中有很多where和orders标准。select的一个字段是‘price’(元素价格),但我还希望(在每一行中)有所有所选元素的最大价格 我试图在select上包含MAX AGGRATE函数,希望它能返回所需的值,但除此之外,price和MAX(price)返回的值是相同的。搜索MySql文档,我找到了原因: 如果在中使用组函数 不包含GROUP BY的语句 子句,它相当于分组 在所有的行上 有没有办法解决这个问题 提前谢谢 有一个类似的问题(但没有解决这个问题):也许您可以使

我有一个查询,其中有很多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)?