我有这张桌子
ID user test
-----------------
1 john aaaaa
2 john aaaaa
3 john bbbbb
4 john NULL
5 john ddddd
6 sonya NULL
7 sonya cccccc
8 sonya dddddd
9 sonya aaaaaa
我需要编写一个查询来提取每个用户的test的第一个非null值
如果我进行分组
SELECT
user,
test,
FROM table
GROUP BY user
我获得了这个结果集
user test
-----------------
john aaaaa
sonya NULL
但是sonya的值为空,我想获得这个值:
user test
-----------------
john aaaaa
sonya cccccc
现在,我知道有一些方法可以从分组依据中获取总和,计数,最大值,最小值等,但是我想知道是否有任何方法可以获取第一个非空值
有人可以帮忙吗?
答案 0 :(得分:1)
尝试此查询
select id, user, test
from T
where id in (
select min(id)
from T as tin
where tin.user = T.user and tin.test is not null
group by tin.user
)
答案 1 :(得分:0)
您可以对用户的min(id)(第一行)组的子查询使用内部联接
select m.id, m.user, m.test
from my_table m
INNER JOIN (
select user, min(id) as min_id
from my_table
where test is not null
group by user
) t on t.uset = m.user and t.min_id = m.id