Php 左连接mysql问题

Php 左连接mysql问题,php,mysql,join,Php,Mysql,Join,这是我的疑问: SELECT * FROM ( SELECT users.id, users.name, users.gender users.gender_preference, users.about_me FROM `users` LEFT JOIN users_purchase ON users.id = users_purchase.user_id WHERE users.id != 20 AND users.status = 1

这是我的疑问:

SELECT *
  FROM (
SELECT users.id, users.name, users.gender
       users.gender_preference, users.about_me
  FROM `users`
LEFT JOIN users_purchase ON users.id = users_purchase.user_id
     WHERE users.id != 20
       AND users.status = 1
       AND users.birthdate <= '1996-03-18' AND users.birthdate >= '1934-03-18'   AND users.gender = '2'                                    
  GROUP BY users.id
      ) AS myTable
我需要从我的查询结果中删除阻止程序“theBlocker”阻止的用户“whoToBlock”。 有什么想法吗


我假设whoToBlock映射到你的user.id,而blocker是一个布尔值。相应地编辑这些条件

我有点不清楚谁在阻止谁。让我假设,作为您的示例,您希望排除任何被用户20阻止的用户。将其添加到查询中的一种简单方法是在where子句中:


请注意,我还删除了额外的子查询层,并添加了表别名,以使查询更具可读性。

我不需要一个连接来实现此功能吗?user1331131-阻止程序是一个整数-阻止您的id。我测试了你的查询——我仍然在查询应该被阻止的用户。
id (primary),theBlocker, whoToBlock
 SELECT *
  FROM (
  SELECT users.id, users.name, users.gender
         users.gender_preference, users.about_me
  FROM  `users`
  LEFT JOIN users_purchase ON users.id = users_purchase.user_id
  LEFT JOIN OTHERTABLE ON whoToBlock = users.id
  WHERE users.id != 20
  AND users.status = 1
  AND users.birthdate <= '1996-03-18' 
  AND users.birthdate >= '1934-03-18'   
  AND users.gender = '2' 
  AND OTHERTABLE.theBlocker IS NULL
  GROUP BY users.id
 ) AS myTable
SELECT u.id, u.name, u.gender, u.gender_preference, u.about_me
FROM `users` u LEFT JOIN
     users_purchase up 
     ON u.id = up.user_id
WHERE u.id <> 20 AND
      u.status = 1 AND
      u.birthdate <= '1996-03-18' AND
      u.birthdate >= '1934-03-18' AND
      u.gender = '2' and
      NOT EXISTS (select 1
                  from blockers b
                  where b.theBlocker = 20 and b.whomToBlock = u.id
                 )                                
GROUP BY users.id;