mysql - 如何连接两个表并获取空值

标签 mysql sql

我有三个表ColorShadeActivity:

颜色:

id     color
---    ------
1       red
2       green
3       white



Shade

   id      shade    
  ----    ------- 
     1      light    
     2        dark

事件:

user_id  shade_id  color_id
------   --------  --------
1          1        1
1          1        2
2          2        3

我正在使用mysql,可以通过特定的色调轻松找到属于用户的颜色:

select c.name, 'assigned'
from color c
left join activity a on c.id = a.color_id
where a.shade_id = 1 and a.user_id = 1;

上面的内容会给我:

Color  Status
-----  -------
red    assigned
green  assigned

问题

但是,我想要一个所有颜色的列表,其中已分配表示属于她的颜色,未分配表示不属于她的颜色。

所以我想要

Color       Status
-----       -------
red         assigned
green       assigned
white       not assigned

最佳答案

SELECT Color, B.shade_id Status
FROM Color A LEFT JOIN (SELECT * 
                      FROM Activity WHERE shade_id = 1) B
     ON A.id = B.color_id

NULL表示未分配。

关于mysql - 如何连接两个表并获取空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830667/

相关文章:

sql - 如何从任何 hstore 值中选择一行?

MySQL - 如果用户可以创建 View ,他们真的需要 ALTER 和 DROP 吗?

mysql - 为什么 SHOW ERRORS 不记录在 MySQL 存储过程中抛出的 SQL 异常?

mysql - 持续扩展更多表的数据库的最佳实践

mysql - 为什么将数据加载到mysql表中这么慢

mysql - SQL 查询 - 未从 Like 语句中获得正确的结果

sql - 使用不同的 WHERE 语句从单个列返回多列数据

sql - PowerShell - 格式化 SQL 输出并将其写入 CSV

mysql - 如何在分区数据库中保持唯一键唯一?

python - 在 MySQL 中增量选择记录并在 Python 中保存到 csv