mysql,如何为具有特定值的单元格赋予优先级

mysql,如何为具有特定值的单元格赋予优先级,mysql,Mysql,在给定的表中,我希望选择列a中具有最大值的行,但同时,如果有两行或更多行具有最大值,则a希望获得列B中的值不为null的行,如果有,否则,即使列B中的值为null,我也只获得具有最大值的第一行 总之: 第一个选项:A列最大值,B列不为空 in case such a row does not exist 第二个选项:A列最大值,B列为空 是否可以使用此约束编写一个查询,或者我必须创建两个查询,中间包含一些逻辑?下面的查询将实现此功能 您可以将多个列与orderby一起使用,如下所示

在给定的表中,我希望选择列a中具有最大值的行,但同时,如果有两行或更多行具有最大值,则a希望获得列B中的值不为null的行,如果有,否则,即使列B中的值为null,我也只获得具有最大值的第一行

总之:

  • 第一个选项:A列最大值,B列不为空

       in case such a row does not exist
    
  • 第二个选项:A列最大值,B列为空


  • 是否可以使用此约束编写一个查询,或者我必须创建两个查询,中间包含一些逻辑?

    下面的查询将实现此功能


    您可以将多个列与
    orderby
    一起使用,如下所示

    SELECT columnA,columnB
    FROM YourTable
    ORDER BY columnA DESC, columnB DESC
    
    它将按列排序A第一个降序,然后按列B降序空将是最后一个选择


    如果只返回一行,则在查询结束时添加一个
    限制1

    您可以使用内联视图返回列a的最大值,然后执行联接以获取具有相同列a值的所有行,然后从这些行中获取列b的最大值

    例如:

     SELECT s.col_a
          , MAX(t.col_b) AS col_b
       FROM ( SELECT MAX(r.col_a) AS col_a
                FROM mytable r
            ) s
       JOIN mytable t
         ON t.col_a = s.col_a 
    

    使用示例数据和所需输出编辑您的问题
     SELECT s.col_a
          , MAX(t.col_b) AS col_b
       FROM ( SELECT MAX(r.col_a) AS col_a
                FROM mytable r
            ) s
       JOIN mytable t
         ON t.col_a = s.col_a