代码之家  ›  专栏  ›  技术社区  ›  Franco

联接表中不存在值

  •  0
  • Franco  · 技术社区  · 9 年前

    我正在使用此查询查找来自 users 不存在于 emails_sent 桌子

    SELECT users.email,users.registration_date 
    FROM users 
    LEFT JOIN emails_sent
    ON emails_sent.email=users.email
    WHERE emails_sent.email IS NULL
    ORDER BY registration_date DESC
    LIMIT 0,50
    

    相反,我想回去 users.email 没有记录的地方 emails_sent.type =“欢迎”

    我尝试了下面的,但没有结果

    SELECT users.email,users.registration_date 
    FROM users 
    LEFT JOIN emails_sent
    ON emails_sent.email=users.email
    WHERE emails_sent.type!='welcome'
    ORDER BY registration_date DESC
    LIMIT 0,50
    

    emails_send表如下

    id  int(11) unsigned    NO  PRI NULL
    email   varchar(200)    YES     NULL
    type    varchar(200)    YES     NULL
    timestamp   int(200)    YES     NULL
    
    1 回复  |  直到 9 年前
        1
  •  2
  •   DRapp    9 年前

    只在LEFT-JOIN部分包含“AND”条件,而不是WHERE

    SELECT 
          users.email,
          users.registration_date 
       FROM 
          users 
             LEFT JOIN emails_sent
                ON users.email = emails_sent.email
               AND emails_sent.type = 'welcome'
       where
           emails_sent.email IS NULL
       ORDER BY 
          registration_date DESC
       LIMIT 
          0,50
    

    因此,您的加入是基于匹配用户的标准,特别是“欢迎”电子邮件消息。o型