Mysql SQL查询语法帮助

Mysql SQL查询语法帮助,mysql,sql,Mysql,Sql,我有一个问题,我想在哪里拉的用户谁没有作出选择,为这周的比赛,并向他们发送电子邮件提醒。我有以下查询,但它没有显示任何结果。它应该给我所有的11个用户,因为这场比赛将在下周举行 SELECT T1.username, T2.* FROM (SELECT id, lead_id, form_id, MAX(case when field_number = 1 then value end) username, MAX(case when fi

我有一个问题,我想在哪里拉的用户谁没有作出选择,为这周的比赛,并向他们发送电子邮件提醒。我有以下查询,但它没有显示任何结果。它应该给我所有的11个用户,因为这场比赛将在下周举行

SELECT 
T1.username, 
T2.*
FROM 
(SELECT 
    id, 
    lead_id, 
    form_id, 
    MAX(case when field_number = 1 then value end) username, 
    MAX(case when field_number = 7 then value end) email, 
    MAX(case when field_number = 6 then value end) tournament_name, 
    MAX(case when field_number = 3 then value end) primary_golfer, 
    MAX(case when field_number = 4 then value end) backup_golfer, 
    MAX(case when field_number = 5 then value end) date, 
    MAX(case when field_number = 8 then value end) tournament_id 
FROM `wp_rg_lead_detail` 
GROUP BY lead_id 
HAVING tournament_id = '4867aac6-186a-4508-9c57-69a468e1167f')T1 
LEFT JOIN
    (SELECT user_login, user_email FROM wp_users)T2 ON T1.username = T2.user_login

我认为你的逻辑一开始就错了。你可能需要从所有球员开始,然后将他们与锦标赛联系起来。使用LEFT JOIN和WHERE子句的值为NULL将查找没有锦标赛条目的用户

SELECT DISTINCT wp_users.*
FROM wp_users
LEFT JOIN (SELECT lead_id
                , MAX(case when field_number = 7 then value end) AS email
                , MAX(case when field_number = 8 then value end) AS tournament_id
           FROM wp_rg_lead_detail
           GROUP BY lead_id
          ) AS t1
  ON t1.email = wp_users.user_email
    AND t1.tournament_id = '4867aac6-186a-4508-9c57-69a468e1167f'
WHERE t1.lead_id IS NULL;

我建议您转到SQLFIDLE,加载您的模式,输入一些示例数据,并显示结果集所需的内容。如果您从左侧的锦标赛列表中获取锦标赛ID,它将生成我正在查找的结果我希望您在SQLFiddle中发布的电子邮件不是真实的电子邮件地址。哦,它们是真实的。好吧,只是更新了它谢谢您的帮助。非常感谢。