Я пытаюсь выбрать строки из таблицы базы данных Microsoft SQL Server, которые для каждого идентификатора в одном столбце (идентификатор) выбирают только строки, у которых есть другой столбца как максимальный (IDtoBeMaxed). Например:Выберите строки из таблицы базы данных SQL Server, только строки, которые имеют другой столбец как максимальный
Из этой таблицы
ID SomeValue IDtoBeMaxed
1 56 2
1 59 2
1 80 1
2 55 5
2 80 5
2 56 3
2 81 3
Я только хочу
ID SomeValue IDtoBeMaxed
1 56 2
1 59 2
2 55 5
2 80 5
У меня есть этот запрос, который работает, но я думаю, что должно быть более быстрым способом, который уменьшает время отклика запрос. Итак, этот запрос дает мне то, что я хочу, я ищу более быстрый запрос времени ответа.
SELECT *
FROM myTable
WHERE ID = 2
AND IDtoBeMaxed = (SELECT MAX(IDtoBeMaxed) FROM myTable WHERE ID = 2)
Редакции: Мне не нужны все строки, как я показал в приведенном выше примере. Мне нужны только строки для определенного идентификатора, как и запрос, который я написал сам.
Результаты: Я попробовал запрос Shavkat, но это не быстрее, чем запрос, который я написал. Остальные ответы возвращают все строки, которые я не ищу. Так что это все еще обсуждается. Но спасибо за ваши ответы.
Запрошенный вами запрос не возвращает нужные значения. Вы уверены, что это правильно? Запрос никогда не вернет строку с идентификатором 1. http://sqlfiddle.com/#!6/d3732/1/0 – SteveB