Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL - Изберете данни с JOIN, но с WHERE клаузи, приложими към сложни и различни периметри

Използвайте recipient NOT IN (SELECT ...) и author NOT IN (SELECT ...) за да изключите участниците, които отговарят на вашите условия 1 и 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)
          )

Условието на ces трябва да е в ON клауза, така че да получите sent_at = NULL за статии, които нямат съвпадащи редове.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изчислим стойността на умножение в цикъла while в PHP?

  2. Съединете две маси с условие - рубин на релси

  3. загуба на връзка с mysql при използване на mysqldump дори с параметър max_allowed_packet

  4. Как да направите пагинация в simpledb

  5. изтриване на ред с ajax функция и php