繁体   English   中英

mysql中两列上的MAX

[英]MAX on two columns in mysql

我想知道是否有更好的方法从列c1中获取最大值,然后从列c2中获取所选行的最大值,而不是

SELECT MAX(c1) , MAX(c2) FROM t GROUP BY c1 HAVING c1 = MAX(c1)
SELECT Max(t2.c1) as C1, 
       Max(t1.c2) as C2 
FROM   t t1 
       INNER JOIN (SELECT Max(c1) AS C1 
                   FROM   t) t2 
               ON t1.c1 = t2.c1 

只要阅读您对hkutluay回应的评论,这可能就是您想要的:

select MAX(colName)
from
(select col1 as colName
from tableName
union
select col2
from tableName) subqueryName

我不太确定是否要使用所有不同的c1或仅使用最大的c1。

如果您想要所有c1:

SELECT c1, MAX(c2) FROM t GROUP BY c1;

如果只需要最大c1:

SELECT c1, c2 FROM t ORDER BY c1 DESC, c2 DESC LIMIT 1;

我知道mysql没有CTE。 但是因为问题也被标记为SQL,并且CTE是子查询的合理的干净解决方案,所以为了完整起见,这里是CTE版本:

WITH zmax AS (
        SELECT MAX(v1) AS v1
        FROM ztable
        )
SELECT zt.v1
        , MAX(zt.v2) AS v2
FROM ztable zt
JOIN zmax mx ON zt.v1 = mx.v1
GROUP BY zt.v1
        ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM