【问题标题】:get max value for column and the same column for specific record at the same time同时获取列的最大值和特定记录的同一列
【发布时间】:2012-12-19 17:55:41
【问题描述】:

我有一张这样的桌子:

_id integer
column_1 text
column_2 integer

如果_id = 1 不存在,我想获得column_2 的值,如果不存在,则获得column_2 的最大值

SELECT max(column_2), column_2
where _id = 2

这肯定会失败,有没有办法在同一个查询中获取这两个值?

【问题讨论】:

    标签: mysql sql select if-statement


    【解决方案1】:

    试试这个查询

    SELECT 
         IFNULL(column_2,l.MValue) 
    FROM mytable 
    LEFT JOIN (
              SELECT 
                id,   
                MAX(column_2) as MValue 
              FROM mytable 
              ) as l ON l.id = mytable.id 
    WHERE mytable.id = 1
    

    SQL Fiddle Demo

    【讨论】:

      【解决方案2】:

      可以使用(Exist)SQL语句

      【讨论】:

        【解决方案3】:

        试试这个:

        SELECT IFNULL(column_2, (SELECT MAX(column_2) FROM test)) column2  
        FROM test WHERE id = 1;
        

        查看SQL FIDDLE DEMO

        【讨论】:

        • 依赖子查询慢,连接快
        【解决方案4】:

        如果我的问题是正确的,这可能会对你有所帮助。

        select 
            IF(column_2 IS NULL, X.maxv, column_2) 
        from test,(select max(column_2) as maxv from test)as X
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-13
          • 2012-04-08
          • 2013-06-26
          • 2021-10-18
          • 1970-01-01
          相关资源
          最近更新 更多