PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tại sao null bằng số nguyên trong WHERE?

Bạn nói đúng rằng NULL cannot be equal to anything .
Điều bạn còn thiếu là NULL không được bằng .

NULL so với bất kỳ thứ gì luôn là NULL . Vấn đề hiện tại là bạn có LEFT JOIN Sai lầm. Điều này sẽ hoạt động:

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;

Bạn có một điều kiện bổ sung tham chiếu đến vv trong WHERE mệnh đề:AND vv.user_id != 39 . Có lẽ đang mong đợi rằng NULL != 39 sẽ đủ điều kiện, nhưng nó không. Thêm chi tiết trong câu trả lời có liên quan này:
Truy vấn với LEFT JOIN không trả về các hàng có số lượng là 0

Về cơ bản có ba kỹ thuật để thực hiện việc này:
Chọn các hàng không có trong bảng khác




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony2 Doctrine - Điều khoản ILIKE cho PostgreSQL?

  2. thiết lập hstore trong rails4, khóa / giá trị động

  3. Mệnh đề KIỂM TRA cho các chế độ xem có thể cập nhật

  4. di chuyển từ sqlite sang postgresql ở django

  5. Cài đặt pdo cho postgres Ubuntu