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

MySQL - Chọn dữ liệu với một JOIN nhưng với mệnh đề WHERE áp dụng cho các chu vi phức tạp và riêng biệt

Sử dụng recipient NOT IN (SELECT ...)author NOT IN (SELECT ...) để loại trừ những người tham gia phù hợp với điều kiện 1 và 2 của bạn.

SELECT             
          hia.query_result_id,
          hia.url,
          hia.title,
          hia.article_publication_day,
          hia.media_name,
          hia.author_full_name,
          hia.author_first_name,
          hia.author_last_name,
          hia.author_email,
          ces.sent_at
FROM
          Hobby_ideas_articles hia
LEFT JOIN
          Past_Customer_sent_messages ces
ON
          hia.author = ces.recipient 
            AND ces.recipient NOT IN (
                SELECT recipient
                FROM Past_Customer_sent_messages
                WHERE sent_at > DATE_SUB(NOW(), INTERVAL 3 HOUR)
            )
WHERE
          hia.hobby_id = HOBBY_ID_INPUT_I_HAVE AND         
          hia.author IS NOT NULL
          AND hia.author NOT IN (
            SELECT recipient
            FROM Past_Customer_sent_messages
            WHERE customer_id = CUSTOMER_ID_INPUT_I_HAVE
            AND sent_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
          )

Điều kiện trên ces phải ở ON để bạn nhận được sent_at = NULL cho các bài viết không có bất kỳ hàng nào phù hợp.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chọn ngày từ cột ngày giờ?

  2. Tìm kiếm GROUP_CONCAT bằng cách sử dụng LIKE

  3. Cách thay đổi quyền chỉ đọc để đặt giá trị mới của biến hệ thống máy chủ MySQL

  4. Tìm nạp các hàng có giá trị được cung cấp nằm giữa hai hàng với điều kiện đã cho

  5. MySQL với các ràng buộc về xóa mềm, khóa duy nhất và khóa ngoại