Tôi đã phải xem xét một số mã, và bắt gặp một cái gì đó mà một người nào đó đã làm, và không thể nghĩ ra một lý do theo cách của tôi là tốt hơn. Và nó có lẽ không phải là, vì vậy, đó là tốt hơn/an toàn hơn/hiệu quả hơn?MAX so với Top 1 - tốt hơn?
SELECT MAX(a_date) FROM a_table WHERE a_primary_key = 5 GROUP BY event_id
HOẶC
SELECT TOP 1 a_date FROM a_table WHERE a_primary_key = 5 ORDER BY a_date
tôi đã có thể đi với các tùy chọn thứ 2, nhưng không chắc chắn lý do tại sao, và nếu điều đó là đúng.
SQL Server TOP 1 hoạt động khác với Oracle sử dụng rowNum = 1. Oracle thực sự lấy đầu tiên nó tìm thấy TRƯỚC KHI đặt hàng, vì vậy phương pháp này chỉ hợp lệ cho SQL Server. Một lợi ích khác của TOP 1 này so với Max() là bạn có thể lấy bao nhiêu cột tùy thích, miễn là bạn bao gồm thứ tự áp dụng. Tôi đã thử nghiệm bằng cách sử dụng Max() và tìm thấy ngay cả với GROUP BY rằng nó dường như không mang lại chỉ 1 bản ghi. Có lẽ ai đó mạnh hơn mojo có thể nói làm thế nào để có được chỉ là một hàng nếu bạn muốn nhận được hàng đầu từ nhiều cột w/o một truy vấn phụ? – gordon