select 中有子查询 如何group by

select (select a.name from base a where a.id=b.s_id) as dd
from base b
现在查出来的name是有重复的,使用group by 的话 又不允许,现在不知道如何去重了

其实可以使用 一下语句来实现的
select b.name
from base b ,base a
where b.id=a.s_id
group by b.name
但是由于开发人的需要只能 使用第一种方法

希望各位大侠 帮小弟解答一下~

select (select a.name from base a where a.id=b.s_id) as dd from base b;
由于select a.name from base a where a.id=b.s_id查出来的数据必须是一条才正常执行,如果是多条,你是要取任意一条? 可以取第一条数据
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-26
select (select top 1 a.name from base a where a.id=b.s_id) as dd
from base b
用top 1或min/max都同
第2个回答  2011-08-26
select (select distcint a.name from base a where a.id=b.s_id) as dd
from base b
第3个回答  2011-08-26
select (select distinct a.name from base a where a.id=b.s_id) as dd
from base b追问

no 不行
是因为b.s_id 有重复 导致的

追答

select (select a.name from base a where a.id=b.s_id) as dd
from base b
上面的语句完全可以改为:
select name as dd from base where id = s_id
接着是说b.s_id有重复
那么就改为:
select name as dd from base where id in (select distinct s_id from base)

第4个回答  2011-08-27
select * from 表明 where 物料 in (select distinct 无聊 from 表)
本回答被提问者采纳
相似回答