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

mysql:vælg alle elementer fra tabel A, hvis de ikke findes i tabel B

Her er prototypen til det, du vil gøre:

SELECT * FROM table1 t1
  WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.id = t2.id)

Her, id antages at være PK og FK i begge tabeller. Du bør justere i overensstemmelse hermed. Bemærk også, at det er vigtigt at sammenligne PK og FK i dette tilfælde.

Så her er, hvordan din forespørgsel skal se ud:

SELECT id, room_name FROM rooms r
WHERE NOT EXISTS 
(SELECT * FROM room_events re
    WHERE
          r.room_id = re.room_id
          AND
          (
          room_start BETWEEN '1294727400' AND '1294729200' 
          OR 
          room_finish BETWEEN '1294727400' AND '1294729200')
          )

Hvis du vil, tjekker du delene af din forespørgsel ved at udføre dem i mysql-klienten. For eksempel kan du sikre dig, om følgende returnerer nogen poster eller ej:

SELECT * FROM room_events 
    WHERE room_start BETWEEN '1294727400' AND '1294729200' 
          OR 
          room_finish BETWEEN '1294727400' AND '1294729200'

Hvis det ikke gør det, har du fundet den skyldige og handler derefter med andre dele :)



  1. PHP indlæser ikke php_pgsql.dll på Windows

  2. 50 Shades of Oracle Database Certificeringseksamen

  3. Hurtigt og bedste trick til SQL Server MDF-filgendannelse

  4. PHP mySQL tjek om brugernavn og adgangskode er i databasen