我建了如下一张表:create table test_dis(
t_id varchar2(10),
t_name varchar2(20)
)insert into test_dis values('001', 'zhangsan')
insert into test_dis values('001', 'lisi')
insert into test_dis values('002', 'wangwu')
insert into test_dis values('003', 'wangwu')select distinct(t_id) from test_dis
select distinct(t_name) from test_dis
--以上两句select语句是对的select distinct(*) from test_dis
select distinct(t_id,t_name) from test_dis
select distinct(t_id), distinct(t_name) from test_dis--这3句select语句是错误的,从逻辑上很好理解为什么是错的,因为如果不显示重复的列,那么从t_id中无法去确定是选第1还是---2行,同样从对t_name用distinct关键字也无法确定是选取第3还是第4行
在这里引出这个例子,目的是希望各位了解比较深入的大哥讲解一下distinct关键字的具体一点的用法,多举几个例子,希望能详细设计到每一个用法
t_id varchar2(10),
t_name varchar2(20)
)insert into test_dis values('001', 'zhangsan')
insert into test_dis values('001', 'lisi')
insert into test_dis values('002', 'wangwu')
insert into test_dis values('003', 'wangwu')select distinct(t_id) from test_dis
select distinct(t_name) from test_dis
--以上两句select语句是对的select distinct(*) from test_dis
select distinct(t_id,t_name) from test_dis
select distinct(t_id), distinct(t_name) from test_dis--这3句select语句是错误的,从逻辑上很好理解为什么是错的,因为如果不显示重复的列,那么从t_id中无法去确定是选第1还是---2行,同样从对t_name用distinct关键字也无法确定是选取第3还是第4行
在这里引出这个例子,目的是希望各位了解比较深入的大哥讲解一下distinct关键字的具体一点的用法,多举几个例子,希望能详细设计到每一个用法
select distinct t_id,t_name from test_dis
select distinct(t_id), distinct(t_name) from test_dis //distinct只可以在一句SQL中,使用一次。
那如果要对2个字段组合使用distinct呢,可以这样吗
select distinct(t_id, t_name) from test_dis
只能出现一次,那你的第3个select语句就是错的,对吧
那如果要对2个字段组合使用distinct呢,可以这样吗
select distinct(t_id, t_name) from test_dis
-----------------
select distinct t_id,t_name from test_dis
select distinct (t_id,t_name) from test_dis; //语法错误
distinct后面的括号,最容易误导人了..
我明白你的意思了,distinct是针对一整行排除重复的,如果查询多个字段,那么返回的是组合值不重复。但是我还有点小疑问,就你写的这个例子而言,如果我要同时显示t_id,t_name 两个字段,但是我只想t_name不重复,该怎么写sql语句啊(不考虑主键什么的)
from test_dis
group by t_name