Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mysql:pilih semua item dari tabel A jika tidak ada di tabel B

Berikut adalah prototipe untuk apa yang ingin Anda lakukan:

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

Di sini, id diasumsikan PK dan FK di kedua tabel. Anda harus menyesuaikannya. Perhatikan juga bahwa penting untuk membandingkan PK dan FK dalam kasus ini.

Jadi, beginilah tampilan kueri Anda:

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

Jika mau, Anda memeriksa bagian kueri Anda dengan menjalankannya di klien mysql. Misalnya, Anda dapat memastikan apakah berikut ini mengembalikan catatan apa pun atau tidak:

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

Jika tidak, Anda telah menemukan pelakunya dan bertindak sesuai dengan bagian lain :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mendapatkan TANGGAL MAKSIMUM kedua di MYSQL

  2. Bagaimana Saya Dapat Menyetel Nilai Default Kolom Timestamp ke Timestamp Saat Ini dengan Laravel Migrations?

  3. Konektor MySql 6.8.2 RC, Entity Framework 6 dan Kode Pertama

  4. Kiri bergabung dengan syarat

  5. MySQL:Mengapa skor selalu 1 di Fulltext?