sql - 为什么 SQL 中外连接的结果包含 null 列,而原始表没有?
问题描述
我一直在玩 Firefox 使用的places.sqlite数据库来存储书签等。它的结构如图所示。
我想执行这个查询:
SELECT b.title, p.url
FROM moz_bookmarks AS b
LEFT OUTER JOIN moz_places AS p using(guid)
WHERE dateAdded > 1502724919884000
ORDER BY dateAdded
AND p.url like '%youtube%'
AND p.url NOT LIKE '%list%';
我确实得到了很多结果,但不幸的是,整个 'url' 列都充满了 NULL。现在当我做
SELECT url FROM moz_places;
网址显示正确。我认为我错过了一些关于连接功能的东西,但直到现在我还不能完全弄清楚。
到目前为止我已经尝试过:
- 检查这个论坛(没有找到任何有效或搜索错误的东西)
- 更改了查询的顺序,导致标题列为空
- 有点盲目地尝试不同的连接,因为这是很多相关的 SO 帖子所建议的
现在我不知道如何解决这个问题,有人可以帮我解决这个问题吗?将不胜感激:)
解决方案
您正在加入guid
列上的表格,而您链接的文档指出:
fk列提供了moz_places中对应记录的id号
所以你的加入条件应该是moz_bookmarks.fk = moz_places.id
:
SELECT b.title, p.url FROM moz_bookmarks AS b
LEFT OUTER JOIN moz_places AS p ON b.fk = p.id
ORDER BY dateAdded
AND p.url like '%youtube%'
AND p.url NOT LIKE '%list%';
推荐阅读
- python - 在排序一个列表期间将不同列表中的相关元素保持在一起
- c# - 如何对通用列表对象进行排序
- javascript - 向和从 js 服务器发送数据的基本方法?
- json - 使用 Pyspark 处理 JSON 结构
- amazon-web-services - 为什么角色假设应该在 lambda 内部完成?
- html - 如何将数值绑定到 CSS 以创建时间线?
- docker - 如何为 docker compose 环境变量设置运行时变量
- javascript - 仅在 Javascript 中具有不同段落的动态 Div
- tsql - 表格模型中的测量列未在浏览器中显示正确的值
- javascript - 调用此函数时如何获取返回值?