有一张桌子和一些记录:
userno | username
-------------------
1 | --this username is null value
1 | a
2 | b
2 | --this username is null value
3 | c
4 | --this username is null value
我想 SELECT 这个表,我希望结果是:
userno | username
-------------------
1 | a
2 | b
3 | c
4 |
当userno
重复时,保留一个username
的数据不为空;
当userno
不重复时,保留它。
=========================
=========================
UPDATE1:
有一张桌子和一些记录:
No | field1 | flag
----------------------------
1 | | 1
1 | a | 2
1 | b | 3
1 | c | 4
2 | c | 1
2 | e | 2
2 | f | 5
3 | c | 0
4 | |
我想 SELECT 这个表,我希望结果是:
No | field1 | flag
-------------------
1 | a | 2
2 | e | 2
3 | c | 0
4 | |
No
重复时,请使用flag=2
保留一个数据;
当No
不重复时,请重新设置它。
答案 0 :(得分:6)
这是对问题的原始版本的回答。
您可以使用聚合:
select userno, max(username) as username
from t
group by userno;
编辑:
如果您对给定的username
有多个userno
,并且您想要所有这些{/ p>
select userno, username
from t
where username is not null
union all
select userno, max(username)
from t
group by userno
having max(username) is null;