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

tham gia bên trái với điều kiện cho bảng bên phải trong mysql

Giả sử PRICES.date là kiểu dữ liệu DATETIME, sử dụng:

   SELECT pd.id, 
          pd.name, 
          pr.price
     FROM PRODUCTS pd
LEFT JOIN PRICES pr ON pr.id = pd.id
                   AND DATE(pr.date) = CURRENT_DATE

Tôi đã sử dụng hàm DATE để xóa phần thời gian, vì CURRENT_DATE sẽ không bao gồm phần thời gian trong khi các bản ghi DATETIME sẽ.

Trong ví dụ này, date tiêu chí đang được áp dụng trước đây THAM GIA được thực hiện. Nó giống như một bảng dẫn xuất, lọc thông tin trước khi thực hiện JOIN - sẽ tạo ra các kết quả khác với nếu tiêu chí được chỉ định trong mệnh đề WHERE.

Để nhận danh sách các sản phẩm và giá cả cho ngày mai, hãy sử dụng:

   SELECT pd.id, 
          pd.name, 
          pr.price
     FROM PRODUCTS pd
LEFT JOIN PRICES pr ON pr.id = pd.id
                   AND DATE(pr.date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)

Tham khảo:

Nếu bạn muốn giá cả ngày thường và ngày mai trong một truy vấn, hãy sử dụng:

   SELECT pd.id, 
          pd.name, 
          pr1.price AS price_today,
          pr2.price AS price_tomorrow
     FROM PRODUCTS pd
LEFT JOIN PRICES pr1 ON pr1.id = pd.id
                   AND DATE(pr1.date) = CURRENT_DATE
LEFT JOIN PRICES pr2 ON pr2.id = pd.id
                   AND DATE(pr2.date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sắp xếp / sắp xếp thứ tự trong MySQL

  2. linux mysql-server không tìm thấy mysql_config

  3. Truy vấn SQL cho những người bạn chung

  4. MySqlCommand Chuẩn bị () không bao giờ đặt IsPrepared thành true

  5. PHP / MySQL 2 câu lệnh 'while' từ 1 truy vấn mysql?