sql >> Databasteknik >  >> RDS >> Mysql

mysql:välj alla objekt från tabell A om de inte finns i tabell B

Här är prototypen för vad du vill göra:

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

Här, id antas vara PK och FK i båda tabellerna. Du bör anpassa dig därefter. Observera också att det är viktigt att jämföra PK och FK i detta fall.

Så här är hur din fråga ska se ut:

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

Om du vill kontrollerar du delarna av din fråga genom att köra dem i mysql-klienten. Du kan till exempel se till om följande returnerar några poster eller inte:

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

Om det inte gör det har du hittat den skyldige och agerar därefter med andra delar :)



  1. SQL Server 2005 implementering av MySQL REPLACE INTO?

  2. PHP mySQL - När är den bästa tiden att koppla från databasen?

  3. Hur man får nästa alfanumeriska ID baserat på befintligt värde från MySQL

  4. Formatera en tidsstämpel