sql - 为什么 WHERE 条件会丢弃 LEFT JOIN 获得的内容?SQLITE
问题描述
- 用户 2 (Marie) 未在“关系”表中注册。因此,稍后在使用 SELECT 时,其关系值必须为空/空。
我做了以下 SELECT 来获取我感兴趣的所有相关数据(正确):
SELECT id, action, actions.uid, name, relation
FROM actions
LEFT JOIN (SELECT * FROM relations GROUP BY uid) USING (uid)
INNER JOIN users USING (uid)
GROUP BY actions.id;
当我需要使用条件根据关系类型“删除”结果时,就会出现问题。
我进行以下查询以从先前的结果中丢弃“朋友”(关系):
SELECT id, action, actions.uid, name, relation
FROM actions
LEFT JOIN (SELECT * FROM relations GROUP BY uid) USING (uid)
INNER JOIN users USING (uid)
WHERE relation != 'friend'
GROUP BY actions.id;
但是它应该返回一个结果(Marie),它返回 0 个结果......
由于类型条件(例如“...WHERE 关系为 NULL”),我对获取 Marie 不感兴趣,我的查询应该通过丢弃来工作,因为它们属于过滤工具。
解决方案
尝试使用 coalesce(Relation,'') != 'friend'. 希望它有效
推荐阅读
- applescript - 将文件复制到另一个文件夹时如何修复applescript中的〜10006错误?
- javascript - 为什么 ReactJS npm 需要这么长时间才能安装在我的机器上
- javascript - Console.log 显示在函数的末尾
- c++ - STL 中的容量和复制
- selenium - 找到颜色的 xpath
- node.js - events.js:180 抛出 er;// 未处理的“错误”事件 ^
- python - 一系列列数据的散点图
- php - 如何防止用户直接从 url 访问文件?
- php - Laravel 5.8 - 每个 IP 的速率限制
- node.js - .where() firestore 查询无法正常工作?