mysql,如何优先考虑具有特定值的单元格

时间:2016-04-30 03:41:37

标签: mysql

在一个给定表中,我想在列A中选择具有最大值的行,但是如果有2行或更多行具有最大值,则想要获取列中值的行-B不为null,如果有的话,否则我只得到第一行的最大值,即使B列中的值为空。

总结:

  1. 第一选择:Column-A maximum,Column-B Not null

       in case such a row does not exist
    
  2. 第二选择:Column-A格言,Column-B Null

  3. 是否可以使用此约束编写单个查询,还是必须创建两个具有某些逻辑的查询?

3 个答案:

答案 0 :(得分:1)

您可以使用多个列ORDER BY,如下所示

SELECT columnA,columnB
FROM YourTable
ORDER BY columnA DESC, columnB DESC

它将按列A按降序排列,然后按降序排列columnB,则null将是最后一个选择。

如果只返回一行,

在查询结尾处添加LIMIT 1

答案 1 :(得分:0)

在查询下方可以解决问题

SELECT * FROM tableA where columnA=(select max(columnA) from tableA) order by columnB desc

答案 2 :(得分:0)

您可以使用内联视图返回col_a的最大值,然后执行连接以获取具有相同col_a值的所有行,然后从这些行中获取col_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