我正在尝试的是让所有没有为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