You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite中<>运算符失效:查询仍返回指定用户数据如何解决

解决你的SQL查询排除'david'的问题

嘿,这个问题我太熟了——本质是SQL运算符优先级在捣乱!你写的原查询里,AND的优先级比OR高,所以实际执行的逻辑是:

要么friends.user_a = users.id,要么(friends.user_b = users.id且users.username <> 'david')

这就导致当friends.user_a匹配到david的id时,不管username是什么都会被返回,自然就漏掉了排除david的条件。

修改后的正确查询

你只需要把OR连接的两个条件用括号括起来,让它们先作为一个整体判断,再和排除david的条件结合:

SELECT username 
FROM users 
INNER JOIN friends 
WHERE (friends.user_a = users.id OR friends.user_b = users.id) 
  AND users.username <> 'david';

额外优化方案(可选)

如果想让逻辑更清晰,也可以用IN来简化条件,可读性更强:

SELECT username 
FROM users 
INNER JOIN friends 
WHERE users.id IN (friends.user_a, friends.user_b)
  AND users.username <> 'david';

这样就能确保所有返回的username都不会是'david'啦!

内容的提问来源于stack exchange,提问作者JohnWick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:40:19