Использование оператора SELECT в предложении WHERE

SELECT * FROM ScoresTable WHERE Score = 
  (SELECT MAX(Score) FROM ScoresTable AS st WHERE st.Date = ScoresTable.Date)

Есть ли имя для описания с помощью оператора SELECT в предложении WHERE? Это хорошая / плохая практика?

Может ли это быть лучшей альтернативой?

SELECT ScoresTable.* 
FROM ScoresTable INNER JOIN 
  (SELECT Date, MAX(Score) AS MaxScore 
  FROM ScoresTable GROUP BY Date) SubQuery 
  ON ScoresTable.Date = SubQuery.Date 
  AND ScoresTable.Score = SubQuery.MaxScore

Это гораздо менее элегантно, но, похоже, работает быстрее, чем моя предыдущая версия. Мне это не нравится, потому что он не очень четко отображается в графическом интерфейсе (и это должно быть понятно начинающим SQL). Я мог бы разбить его на два отдельных запроса, но потом все начинает захламляться ...

Примечание. Мне нужно больше, чем просто Дата и Оценка (например, имя)

9
задан jofitz 21 June 2011 в 12:51
поделиться