Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何才能找到同时具有最小值为1列和最大值为1列的行?_Mysql_Sql - Fatal编程技术网

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中执行子查询在这里不是最优的。

要加快此查询的速度,请将索引添加到两列中,您已经正确理解了这一点。但是您建议的查询需要花费很多时间来执行。还有别的办法吗?