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
Dette vil være mest effektivt, hvis der er et indeks på mydate
, da denne betingelse er sargbar og vil bruge en Index Seek
.
Hvis der ikke er noget indeks, så brug IFNULL
konstruktioner foreslået af andre.