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

Pilih nilai dari daftar yang tidak ada dalam tabel

Tabel temp adalah solusi terbaik, tetapi jika tidak memungkinkan, Anda dapat memalsukan tabel temp dengan memilih konstanta dan menyatukannya.

Dengan menggunakan solusi ini, Anda dapat melakukan hal berikut:-

SELECT i
FROM 
(
    SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 6 UNION SELECT 7
) AS mylistofids 
LEFT JOIN mytable
ON mytable.id = i
WHERE mytable.id IS NULL;

Anda juga dapat menghasilkan sejumlah besar angka (dengan asumsi Anda berurusan dengan id bilangan bulat) dengan menggabungkan rentang angka. Kemudian pilih saja yang ada di klausa IN:-

SELECT i
FROM 
(
    SELECT units.i + tens.i * 10 + hundreds.i * 100 + thousands.i * 1000 + tensthousands.i * 10000 AS i
    FROM (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS units
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS tens
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS hundreds
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS thousands
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS tensthousands
) AS mylistofids 
LEFT JOIN mytable
ON mytable.id = i
WHERE mylistofids.i IN (1, 2, 3, 6, 7)
AND mytable.id IS NULL;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bandingkan hanya hari dan bulan dengan bidang tanggal di mysql

  2. Cara tercepat untuk memperbarui tabel MySQL jika ada baris lain yang disisipkan. Lebih dari 2 kunci non-unik

  3. Cara yang efisien untuk menyimpan Array dan Kuncinya ke database

  4. MySql:apakah mungkin untuk 'SUM JIKA' atau 'HITUNG JIKA'?

  5. Pengecualian Tak Terduga:SQLSTATE[HY000] [1045] Akses ditolak untuk pengguna ****@'localhost' (menggunakan kata sandi:YA)