MySQL查询 – 帮助选择

我正在尝试的是让所有没有为fid = 13设置值的用户或者在profile_values中根本没有值.我猜这有一个简单的解决方案,…但我只是没有看到它.非常感谢任何帮助或正确方向上的一点.

(表users和profile_values都来自Drupal.)

简化值:

uid   name  fid     value
1   user1    1       foo
1   user1    2       foo
2   user2    12      
2   user2    13      1265662514
3   user3    NULL    NULL
4   user4    NULL    NULL

我在尝试什么:

SELECT u.uid, u.name, pv.fid, pv.value
FROM users u 
LEFT JOIN profile_values pv ON pv.uid = u.uid  
WHERE u.status != 0
AND (pv.fid != 13 OR pv.fid IS NULL) 
GROUP BY u.uid

uid     name      fid     value
1     user1     1       foo
2     user2     12      foo 
3     user3     NULL    NULL
4     user4     NULL    NULL

我的问题是user2,它不应该存在,因为它的值在fid = 13

感谢所有令人难以置信的快速和合格的答案,欢呼!

最佳答案 您想要添加AND子句:

    AND u.uid NOT IN(从fid = 13的profile_values中选择uid)作为bad_uids

点赞