Как я могу найти строки, которые имеют MIN из 1 столбца и Max из 1 столбца вместе? - PullRequest
0 голосов
/ 04 января 2011

Вот мой запрос

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

Что я хотел бы сделать, это получить строки, которые имеют Min.value of General_Rank и в которых Max.value из Service_Duration .Может кто-нибудь сказать мне, что не так с вышеупомянутым запросом ??

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Как насчет этого?

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.

EDIT: Чтобы ускорить его, вы можете попытаться создать индексы для Service_Duration и Total_Rank, как кто-то предложил.

Я не знаю, какой код выполняет этот SQL-запрос (Java, PHP?), Но, возможно, было бы проще сделать это в двух отдельных запросах? Я не эксперт в области MySQL, но я полагаю, что выполнение подзапроса в подзапросе не является оптимальным.

0 голосов
/ 04 января 2011

На самом деле не получите то, что вы хотите.

Как насчет этого?

ВЫБРАТЬ * ОТ ТБЛ ГДЕ Общий_рэнк = (ВЫБЕРИТЕ МИН. (Общий_Ранк) ОТ ТБЛ) AND Service_Duration = (ВЫБЕРИТЕ МАКС. (Service_Duration) ОТ tbl)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...