sql >> Database teknologi >  >> RDS >> Mysql

SQL-forespørgsel, der returnerer alle datoer, der ikke er brugt i en tabel

Du har ret – SQL gør det ikke nemt at identificere manglende data. Den sædvanlige teknik er at forbinde din sekvens (med mellemrum) mod en komplet sekvens og vælge disse elementer i sidstnævnte sekvens uden en tilsvarende partner i dine data.

Så @BenHoffsteins forslag at opretholde en permanent dato tabel er en god en.

Ud over det kan du dynamisk oprette dette datointerval med en heltalstabel . Forudsat integers tabellen har en kolonne i med tal på mindst 0 – 13, og at din tabel har sin datokolonne med navnet datestamp :

   SELECT candidate_date AS missing
     FROM (SELECT CURRENT_DATE + INTERVAL i DAY AS candidate_date
             FROM integers
            WHERE i < 14) AS next_two_weeks
LEFT JOIN my_table ON candidate_date = datestamp
    WHERE datestamp is NULL;


  1. Postgresql :Hvordan vælger jeg top n procent(%) poster fra hver gruppe/kategori

  2. PL/SQL-program til at udskrive medarbejderoplysninger

  3. Er EXISTS mere effektiv end COUNT(*)>0?

  4. Dump sql-fil til ClearDB i Heroku