根据两个表中不匹配的列的位置在第三个表中查找记录

时间:2016-06-22 09:07:46

标签: mysql

我想获得如下记录,但不能:

  SELECT *
  FROM D
  WHERE D.C IN (
      SELECT A.*
      FROM A
      LEFT JOIN B ON (A.C = B.C)
      WHERE B.C IS NULL)

基本上想要在A.Column&的比较中获得不匹配中的任何内容B.Column根据D结果选择A & B。{/ p>

  

已编辑以在实际应用中显示代码示例:

这是php中的示例代码,用于向续签用户发送续订通知并登录到两个表mailer&基于过期用户的续订:

      SELECT * FROM expiring_users WHERE expiring_users.id IN(
           SELECT mailer_log.*
           FROM mailer_log
           LEFT JOIN renewals_log ON (mailer_log.id = renewals_log.id)
           WHERE renewals_log.id IS NULL)

希望这可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

搞定了。对于其他情况,我使用下面的代码:

SELECT * FROM expiring_users 
WHERE expiring_users.id IN(
    SELECT mailer_log.id
    FROM mailer_log
    LEFT JOIN renewals_log ON (mailer_log.id = renewals_log.id)
    WHERE renewals_log.id IS NULL)

它会根据expiring_usersmailer_log不匹配的条目从renewals_log表中获取所有记录。

这用于验证通知邮件程序系统是否无法根据现有用户表更新续订中的记录并使用户过期。