首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么样的连接可以在连接表中看到不存在的值?

什么样的连接可以在连接表中看到不存在的值?
EN

Stack Overflow用户
提问于 2012-03-08 05:28:55
回答 3查看 1.4K关注 0票数 5

我有表userslocations和一个连接表。连接表还具有该位置的每个人的排名值,因为这些个人在某些位置的排名高于其他位置。

代码语言:javascript
运行
复制
users
=========
id | name
=========
 1 | john
 2 | bob
 3 | alex

locations
===============
id | name
===============
 1 | san diego
 2 | dallas
 3 | new york
 4 | denver

join_users_locations
==============================
user_id | location_id | rank
==============================
      2 |           1 | 4
      2 |           2 | 3
      2 |           4 | 2
      3 |           1 | 2
      3 |           2 | 4

您可以看到,在连接表中,只有当用户在该位置具有排名时,才会列出该用户。如果它们的等级为零/空,则它们甚至不在表中。

我想得到这样的查询结果:

代码语言:javascript
运行
复制
name |  location | rank 
=======================
 bob | san diego | 4
 bob |    dallas | 3
 bob |  new york | 0
 bob |    denver | 2

正如您所看到的,我希望所有位置都在列表中,即使是用户未连接的位置(只需将这些字段的等级值设置为零)。

很容易获得他/她加入的位置和排名的列表:

代码语言:javascript
运行
复制
SELECT
    u.name,
FROM users u
LEFT JOIN join_users_locations jul ON jul.user_id = u.id
LEFT JOIN locations l ON l.id = jul.location_id
WHERE u.id = 2

但这只列出了用户加入的位置。我还想看看未加入的位置。

我知道这是可能的,但我不确定解决方案是什么。我尝试了一些不同类型的连接,得到了不同的结果。

SQL FIDDLE HERE

EN

Stack Overflow用户

发布于 2012-03-08 05:32:09

左外部联接。外部连接包括连接“左侧”的所有内容,即使左侧没有相应的元组。不过,您可能会得到null而不是0。这样可以吗?(如果不是,可以将空值显示设置为0 )

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9609355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档