如何找到MIN为1列,Max为1列的行?

时间:2011-01-04 10:48:17

标签: mysql sql

这是我的查询

SELECT s1.* FROM tbl s1 
JOIN ( 
SELECT ID, MIN(Overall_Rank) AS rank, MAX(Service_Duration) AS duration FROM tbl 
)
AS s2 ON s1.ID = s2.ID AND s1.Overall_Rank= s2.rank AND s1.Service_Duration=s2.duration

我想要做的是得到具有Total_Rank最小值的行,并且其中有Max.value of Service_Duration 。谁能告诉我上面的查询有什么问题?

2 个答案:

答案 0 :(得分:0)

不要真正得到你想要的东西。

这个怎么样?

SELECT * 从tbl WHERE Overall_Rank =(SELECT MIN(Overall_Rank)FROM tbl)   AND Service_Duration =(SELECT MAX(Service_Duration)FROM tbl)

答案 1 :(得分:0)

这个怎么样?

SELECT * FROM tbl WHERE Service_Duration = (
SELECT MAX(Service_Duration) FROM tbl WHERE Overall_Rank = (SELECT MIN(Overall_Rank) FROM tbl))

假设我已正确理解您,您有兴趣返回Overall_Rank列中具有最大值的最低Service_Duration行。

编辑: 为了加快速度,您可以尝试在Service_Duration和Overall_Rank上创建索引,就像有人建议的那样。

我不知道哪种代码执行这个SQL查询(Java,PHP?),但也许在两个单独的查询中更容易实现?我不是MySQL领域的专家,但我认为在子查询中执行子查询并不是最佳选择。