PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengapa null sama dengan bilangan bulat di WHERE?

Anda benar bahwa NULL cannot be equal to anything .
Yang Anda lewatkan adalah NULL tidak boleh tidak sama , baik .

NULL dibandingkan dengan apa pun selalu NULL . Masalahnya adalah Anda mendapatkan LEFT JOIN salah. Ini akan berhasil:

SELECT v.user_id, v.version_id, vv.user_id
FROM   versions v
LEFT   JOIN versions_votes vv ON v.version_id = vv.version_id
                             AND vv.user_id = 39
WHERE  vv.version_id IS NULL
ORDER  BY v.created
LIMIT  1;

Anda memiliki ketentuan tambahan yang merujuk pada vv di WHERE klausa:AND vv.user_id != 39 . Mungkin mengharapkan NULL != 39 akan memenuhi syarat, tetapi tidak. Detail lebih lanjut dalam jawaban terkait ini:
Kueri dengan LEFT JOIN tidak mengembalikan baris untuk hitungan 0

Pada dasarnya ada tiga teknik untuk melakukan ini:
Pilih baris yang tidak ada di tabel 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. Apakah ukuran yang dideklarasikan bidang varchar berdampak pada PostgreSQL?

  2. GroupingError:ERROR:kolom harus muncul di klausa GROUP BY atau digunakan dalam fungsi agregat

  3. Izin Pengguna PostgreSQL

  4. Bagaimana cara saya menulis kueri Django dengan subkueri sebagai bagian dari klausa WHERE?

  5. PostgreSQL JDBC Null String diambil sebagai byte