【发布时间】:2019-08-21 13:33:36
【问题描述】:
我有两张桌子:
- 人员(ID、姓名)
- 运动(person_ID,运动)
问题:Sport 可以有 NULL 值。如果是这种情况,那么如果我按 ID 分组,那么这项运动应该是 NULL。
SELECT p.ID, p.Name, s.Sport
FROM Person p
INNER JOIN Sports s ON p.ID=s.person_id
GROUP BY p.ID
如果没有 Group By 表如下所示:
p.ID p.Name s.Sport
1 tom soccer
1 tom NULL
2 lisa golf
2 lisa soccer
3 tim golf
3 tim NULL
我现在想要什么:
1 tom NULL
2 lisa golf
3 tim NULL
但我得到了什么:
1 tom soccer
2 lisa golf
3 tim golf
我已经尝试过 subselects 和 ifs 但我什么都做不了。提前致谢!
【问题讨论】:
-
为什么丽莎应该打高尔夫球而不是足球?
-
如果我运行这个,如果有多个(在我的系统上),Group by 函数总是选择第一行。但这并不重要。我只需要 tim 和 tom 为 NULL
-
在选择列表中使用case表达式进行条件聚合。如果列有空值,请记住 count(*) count(column)。
-
@stuckonhere 为什么不将
where sport is NULL添加到查询中? -
如果我只添加 IS NULL 它会删除 lisa 条目,我需要这个条目。