Mysql 如何才能找到同时具有最小值为1列和最大值为1列的行?
这是我的问题Mysql 如何才能找到同时具有最小值为1列和最大值为1列的行?,mysql,sql,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 我想做的是获取具有总排名的最小值和服务持续时间的最大值的行。有谁能告诉我上
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
我想做的是获取具有总排名的最小值和服务持续时间的最大值的行。有谁能告诉我上面的查询有什么问题吗???没有真正得到你想要的 这个怎么样
SELECT * FROM tbl WHERE Service_Duration = (
SELECT MAX(Service_Duration) FROM tbl WHERE Overall_Rank = (SELECT MIN(Overall_Rank) FROM tbl))
选择*
来自tbl
其中,总体排名=从tbl中选择总体排名
服务持续时间=从tbl中选择最大服务持续时间
SELECT * FROM tbl WHERE Service_Duration = (
SELECT MAX(Service_Duration) FROM tbl WHERE Overall_Rank = (SELECT MIN(Overall_Rank) FROM tbl))
假设我对您的理解是正确的,那么您有兴趣返回总体排名最低的行,这些行在服务持续时间列中具有最大值
编辑:
如有人建议的,为了加快速度,您可以尝试创建关于服务持续时间和总体排名的索引
我不知道是什么样的代码执行这个SQL查询Java,PHP?,但也许在两个单独的查询中执行会更容易些?我不是MySQL领域的专家,但我认为在subquery中执行子查询在这里不是最优的。要加快此查询的速度,请将索引添加到两列中,您已经正确理解了这一点。但是您建议的查询需要花费很多时间来执行。还有别的办法吗?