同时获取列的最大值和特定记录的同一列
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
【讨论】:
以上是关于同时获取列的最大值和特定记录的同一列的主要内容,如果未能解决你的问题,请参考以下文章