Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MySQL MAX函数访问行的其余部分时遇到问题_Mysql_Max - Fatal编程技术网

使用MySQL MAX函数访问行的其余部分时遇到问题

使用MySQL MAX函数访问行的其余部分时遇到问题,mysql,max,Mysql,Max,我试图在用MAX函数返回的行上返回另一列。例如,我有一张桌子,鸡蛋=>10个,培根=>20个。我正试图根据价值返还鸡蛋或培根。我试过这个: SELECT column1, MAX(column2) FROM table 我似乎无法访问column1的值。我是否缺少MAX函数 答复: SELECT column1, MAX(column2) as col2 FROM table GROUP BY column1 ORDER BY col2 要对一组数据应用max()聚合函数: SELECT c

我试图在用MAX函数返回的行上返回另一列。例如,我有一张桌子,鸡蛋=>10个,培根=>20个。我正试图根据价值返还鸡蛋或培根。我试过这个:

SELECT column1, MAX(column2) FROM table
我似乎无法访问column1的值。我是否缺少MAX函数

答复:

SELECT column1, MAX(column2) as col2 FROM table GROUP BY column1 ORDER BY col2

要对一组数据应用
max()
聚合函数:

SELECT column1, MAX(column2) 
FROM table
group by column1

如果您的意思是要确定最大值并获取与该最大值相关的详细信息,那么有多种方法可以做到这一点:

  • 使用计算最大
    column2
    值的查询作为标量子查询,将
    column2
    与结果进行匹配(如下所示):

  • 也可以将子查询用作派生表:

    SELECT t.*
    FROM atable AS t
    INNER JOIN (
      SELECT MAX(column2) AS max_column2 FROM atable
    ) AS m ON t.column2 = m.max_column2
    ;
    
  • 您只需按
    column2
    的降序对行进行排序,然后返回最上面的一行:

    SELECT *
    FROM atable
    ORDER BY column2
    LIMIT 0, 1
    ;
    
    请注意,与前两个选项不同,此选项最多返回一行,即使最大值存在关联

  • 如果您需要处理的不仅仅是一个最大值,而是每个分组标准(或多个标准)的一个最大值,那么我相信上述第二个选项最容易适应:

    SELECT t.*
    FROM atable AS t
    INNER JOIN (
      SELECT grouping_criterion, MAX(column2) AS max_column2
      FROM atable
      GROUP BY grouping_criterion
    ) AS m ON t.grouping_column = m.grouping_column
          AND t.column2 = m.max_column2
    ;
    

    我通过使用orderby函数使它工作

    SELECT column1, MAX(column2) as col2 FROM table GROUP BY column1 ORDER BY col2
    

    最后,我将它与订单一起使用。如果您有不同的、更好的解决方案,请分享。添加您自己的答案并解释解决方案。
    SELECT column1, MAX(column2) as col2 FROM table GROUP BY column1 ORDER BY col2