可以用MAX()得到表中某属性的最大值,
select max(colx) from table
但是也只返回这个值,不能返回其他内容,我们有时关心的是这个最大值所在行的其他属性值,通常的建议是这样的:
select * from table where colx=(select max(colx) from table)
实际上该语句在DB中执行了两次查询,一次遍历取到最大值,一次查询取到最大值的行,当然如果colx列建立的索引了的话,应该能会很快得到结果
还有采用排序输出的
select * from table order by desc colx limit 0,1
这个确实会返回colx最大的行,不过我们知道排序比取最大值的复杂度高,这个的效率比前面那个还低
还有推荐采用多表join的查询,其实计算复杂度也比第一种方法高。
我介绍另外一种方法,在没有索引的情况下,可能查询效率比第一种还高,在DB中只执行一次遍历即可得到结果。为简化,假设我们要查询colx列最大值的那行另外几个属性cola,colb,colc,都是字符串类型,而且其中不包含某个字符比如"$",那么我们可以这样操作
select max(CONCAT_WS("$",colx,cola,colb,colc)) from table
这样得到的返回值是一个拼接串,对其进行split(“$”)操作可以得到需要的属性值