Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql:изберете всички елементи от таблица А, ако не съществуват в таблица Б

Ето прототипа за това, което искате да направите:

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

Тук id се приема, че е PK и FK в двете таблици. Трябва да коригирате съответно. Забележете също, че в този случай е важно да се сравни PK и FK.

И така, ето как трябва да изглежда вашата заявка:

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

Ако желаете, проверявате частите от вашата заявка, като ги изпълнявате в mysql клиент. Например, можете да се уверите, че следното връща записи или не:

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

Ако не стане, вие сте намерили виновника и действате съответно с други части :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-добрият начин за съхраняване на времеви интервал в MySQL база данни?

  2. Mysql Преброяване на последователните редове, които съвпадат

  3. Поддръжка на транзакции на MyIsam engine

  4. mysql след тригер за вмъкване, който актуализира колоната на друга таблица

  5. Как да стартирате Java приложение с MySQL DB на компютър без инсталиран MySQL?