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
Dies ist am effizientesten, wenn es einen Index auf mydate
gibt , da diese Bedingung sargable ist und einen Index Seek
verwendet .
Wenn kein Index vorhanden ist, verwenden Sie IFNULL
von anderen vorgeschlagene Konstrukte.