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

Mệnh đề IN SQL - lấy lại các phần tử IN không khớp

Có vẻ như Rooms của bạn bảng chỉ chứa dữ liệu cho các công việc đang hoạt động. Điều này có ý nghĩa theo nhiều cách, bởi vì bạn không muốn lưu trữ thông tin về những người không thực sự chiếm trong phòng. Nhưng nó đặt ra một thách thức để tạo tập kết quả mong muốn của bạn, vì các phòng bị thiếu không có trong Rooms .

Một lựa chọn ở đây là cách tiếp cận "bảng lịch". Bạn có thể LEFT JOIN một bảng chứa tất cả các phòng cho Rooms hiện tại của bạn bảng, sau đó gắn nhãn những người bị thiếu là nobody .

SELECT t1.Room,
       COALESCE(t2.OccupantName, 'Nobody') AS OccupantName
FROM
(
    SELECT "Room 1" AS Room
    UNION ALL
    SELECT "Room 2"
    UNION ALL
    SELECT "Room 3"
    UNION ALL
    SELECT "Room 4"
) AS t1
LEFT JOIN Rooms AS t2
    ON t1.Room = t2.Rooms

Lưu ý rằng tôi đã sử dụng truy vấn con dòng để tạo bảng cho tất cả các phòng. Trên thực tế, bạn có thể tạo một bảng thực tế trong Workbench chứa thông tin này.

Demo tại đây:

SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP 7.2.2 + mysql 8.0 PDO cung cấp:phương thức xác thực không xác định đối với máy khách [caching_sha2_password]

  2. Tạo đối tượng Ngày trong PHP cho các ngày trước năm 1970 ở định dạng nhất định

  3. đối tượng java.sql.Time bị nhầm lẫn với đối tượng java.sql.Date

  4. PHP / Apache:PHP Lỗi nghiêm trọng:Gọi đến hàm không xác định mysql_connect ()

  5. LAST_INSERT_ID () luôn trả về 0 (RMySQL) - vấn đề kết nối riêng