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
Това ще бъде най-ефективно, ако има индекс на mydate
, тъй като това условие може да се коригира и ще използва Index Seek
.
Ако няма индекс, използвайте IFNULL
конструкции, предложени от други.