【发布时间】:2019-10-10 12:31:11
【问题描述】:
我有表 user1:
id |date
1 2018-01-01
2 null
3 2018-01-01
4 null
还有另一个表user2:
id |date_buy
1 2018-01-01
1 2018-01-02
2 2018-01-01
2 2018-01-02
3 2018-01-01
4 2018-01-01
我想进行一个选择查询,从表 user1 中选择 id 和日期,但如果日期字段为空,那么它将为该用户获取最小的 date_buy 并用它填充缺失的部分。
所以我的第一个想法是: - 对第一个表进行简单查询 SELECT id,来自 user1 的日期
对第二个表进行简单查询 SELECT id, min(date_buy) as date from user2 group by id
联合这两个查询,并在日期不为空的地方区分
这给出了类似的东西:
SELECT distinct id, date
from (SELECT id, date
from user1
UNION
select id, min(date_buy) as date
from user2 group by id)
where date is not null
但我很难塑造它并让它发挥作用。
【问题讨论】:
-
DISTINCT不是一个函数,它适用于整个选定的行。删除那些多余的括号以使代码更清晰,即SELECT distinct id, date from ...。