WITH limits AS
(
SELECT COALESCE(@startDate, MIN(mydate)) AS startDate, COALESCE(@endDate, MAX(mydate)) AS endDate
FROM mytable
)
SELECT m.*
FROM limits
JOIN mytable m
ON mydate BETWEEN startDate AND endDate
Điều này sẽ hiệu quả nhất nếu có một chỉ mục trên mydate
, vì điều kiện này có thể phân tích được và sẽ sử dụng Index Seek
.
Nếu không có chỉ mục, hãy sử dụng IFNULL
cấu trúc do người khác đề xuất.