sql >> Database teknologi >  >> RDS >> Sqlserver

En enkelt sql-forespørgsel, som kan håndtere både null- eller værdisat datointerval i sql-serveren

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.



  1. fejl ved indsættelse i tabel med i stedet for trigger fra entity data framework

  2. ORDER_BY dato LIMIT 1

  3. password_verify php matcher ikke

  4. php-form:kan ikke opdatere databasen, forespørg med multiple join