sql >> Database >  >> RDS >> Mysql

mysql:selecteer alle items uit tabel A indien niet aanwezig in tabel B

Hier is het prototype voor wat je wilt doen:

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

Hier, id wordt in beide tabellen verondersteld de PK en FK te zijn. U moet dienovereenkomstig aanpassen. Merk ook op dat het in dit geval belangrijk is om PK en FK te vergelijken.

Dus, hier is hoe uw zoekopdracht eruit zou moeten zien:

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')
          )

Als je wilt, controleer je de delen van je query door ze uit te voeren in de mysql-client. U kunt er bijvoorbeeld voor zorgen dat het volgende records retourneert of niet:

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

Als dit niet het geval is, heb je de boosdoener gevonden en handel je dienovereenkomstig met andere onderdelen :)



  1. Ontvang de eerste/laatste n records per groep door

  2. Hoe te ontsnappen aan speciale tekens van mysql met sockets.io/node.js/javascript

  3. Hoe u het gegevenstype aardrijkskunde van SQL Server kunt begrijpen

  4. Hoe een MYSQL auto-increment veld te annoteren met JPA annotaties