同时获取列的最大值和特定记录的同一列

Posted

技术标签:

【中文标题】同时获取列的最大值和特定记录的同一列【英文标题】: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

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于同时获取列的最大值和特定记录的同一列的主要内容,如果未能解决你的问题,请参考以下文章

如何检索表的值以获取sql中两列的最大值

SQL 最大值但也显示来自其他列的值

我想返回一列的最大值

SQL:获取一列和相应的其他列的最大值[重复]

Postgres:获取对应于组中其他列的最大值的列的值

sql选择某一列的最大值与最小值并在同一列中显示