我有这个查询:
SELECT username FROM users INNER JOIN friends WHERE friends.user_a = users.id OR friends.user_b = users.id AND users.username <> 'david';它返回一行where users.username ='david'。 我怎么能没有这个返回?
'用户'表格结构/样本数据
'朋友'表结构/样本数据
I have this query:
SELECT username FROM users INNER JOIN friends WHERE friends.user_a = users.id OR friends.user_b = users.id AND users.username <> 'david';It is returning a row where users.username = 'david'. How can I have this not returned?
'users' table structure/sample data
'friends' table structure/sample data
最满意答案
也许尝试NOT LIKE '%david%'的任何非打印字符?
尝试WHERE (friends.user_a = users.id OR friends.user_b = users.id) AND users.username <> 'david';
说明:你的逻辑是friends.user_a = users.id OR friends.user_b = users.id AND users.username <> 'david'你在说:“给我带任何人的朋友用user_a或者等等......”首先应用它并不需要检查其余部分,但在括号后面,我们说:“带给我任何人1.与user_a或users_b是朋友2.他的user_name不是'david'”。
Maybe try NOT LIKE '%david%' for any non-print chars?
try WHERE (friends.user_a = users.id OR friends.user_b = users.id) AND users.username <> 'david';
Explanation: Your logic was friends.user_a = users.id OR friends.user_b = users.id AND users.username <> 'david' You were saying: "bring me anyone who's friend with user_a OR etc..." so when the first applies it doesn't need to check the rest, but after the parentheses, we are saying: "Bring me anyone who 1. Is friends with user_a or users_b 2. His user_name is not 'david'".
更多推荐
发布评论