sql 去重并排序问题

字段1 字段2 字段3
1 a A
2 a B
3 b V
4 b F
5 c O
6 d G

类似上边的表,现在想去重查询出字段2所有值,然后按字段1排序,应该怎么写sql语句?
结果出来应该是:
a
b
c
d
同志们:select distinct 字段2 from 表 order by 字段1
这种写法是错误的,sql提示:若指定了SELECT DISTINCT,那么ORDER BY子句中的项就必须出现在选择列表中。

walkmens,您说的还是没有进行排序啊,我主要是想去重后按字段1排序的。。。
意思就是select distinct 字段2 from 表 order by 字段1,当然这么写是错误的。
怎么能实现这样的查询啊?
帅气の魔鬼:你的语句是错误的,通不过的。。。

第1个回答  推荐于2017-11-23
SELECT A.* FROM 表 A JOIN
(
SELECT MIN(字段1) AS 字段1,字段2 FROM 表 GROUP BY 字段2
) B ON (A.字段1=B.字段1 AND A.字段2=B.字段2)
ORDER BY A.字段1

没有测试,想着就写了,你试一下吧本回答被提问者采纳
第2个回答  2019-08-20
select
distinct
name
from
a
where
eid
in(select
eid
from
b
group
by
eid)
要求查询在b表出现过的企业名称,不重复
这样就够了.至于根据时间倒叙
和结果没影响.
第3个回答  2010-02-25
Select distinct 字段1,字段2 from 表名 order by 字段1

保证正确,我刚刚试过了,使用distinct(不重复)后order by 的字段也必须出现在Select之中
第4个回答  2010-02-25
create table tb
(
ID int,
VALUE varchar(10)
)

insert into tb(ID,VALUE) values(1,'A')
insert into tb(ID,VALUE) values(2,'A')
insert into tb(ID,VALUE) values(3,'B')
insert into tb(ID,VALUE) values(4,'B')
insert into tb(ID,VALUE) values(5,'C' )
insert into tb(ID,VALUE) values(6,'D' )

select VALUE from tb where [ID] in(
select min([ID]) from tb group by VALUE
) order by [ID]

drop table tb
第5个回答  2010-02-25
select 字段2 from 表 order by 字段1 asc 或者 desc

asc 是正序 desc 是倒序 估计你的错误就是没加
相似回答