Мне пришлось пересмотреть код и наткнулся на то, что кто-то сделал, и не может придумать причину, по которой мой путь лучше. И, вероятно, это не так, что лучше/безопаснее/более эффективно?MAX vs Top 1 - что лучше?
SELECT MAX(a_date) FROM a_table WHERE a_primary_key = 5 GROUP BY event_id
ИЛИ
SELECT TOP 1 a_date FROM a_table WHERE a_primary_key = 5 ORDER BY a_date
Я пошел бы с 2-й вариант, но я не знаю, почему, и если это так.
SQL Server TOP 1 ведет себя иначе, чем Oracle, используя rowNum = 1. Oracle на самом деле захватывает первый, который он находит до заказа, поэтому этот метод действителен только для SQL Server. Еще одно преимущество этого TOP 1 против Max() заключается в том, что вы можете захватить столько столбцов, сколько хотите, до тех пор, пока вы включите соответствующий заказ. Я тестировал с помощью Max() и нашел даже с GROUP BY, что он, похоже, не дал всего 1 запись. Возможно, кто-то, как более сильный mojo, может сказать, как получить только одну строку, если вы хотите получить вершину из нескольких столбцов без подзапроса? – gordon