Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL - Pilih data dengan JOIN tetapi dengan klausa WHERE yang berlaku untuk perimeter yang kompleks dan berbeda

Gunakan recipient NOT IN (SELECT ...) dan author NOT IN (SELECT ...) untuk mengecualikan peserta yang cocok dengan ketentuan 1 dan 2.

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)
          )

Kondisi pada ces harus dalam ON klausa sehingga Anda akan mendapatkan sent_at = NULL untuk artikel yang tidak memiliki baris yang cocok.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 10 tips bermanfaat tentang penyetelan kinerja MySQL

  2. Bagaimana Anda ATAU dua pernyataan LIKE?

  3. Benar-benar berjuang dengan CONCAT_WS ... tolong bantu pemula :)

  4. SQL SERVER – Salah Satu Trik Menangani SQL Dinamis untuk Menghindari Serangan Injeksi SQL?

  5. MySQL:Urutkan '1' SEBELUM '101'