我建了如下一张表: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关键字的具体一点的用法,多举几个例子,希望能详细设计到每一个用法
解决方案 »
- 新服务器及存储设备如何使用原ORACLE数据库?
- 请教一下一条SQL语执行顺序,高手指点一下。。
- 求利用微软企业库2.0连接oracle9i数据库的例子
- 求把数据由SYSTEM表空间转移到USERS表空间的方案
- 急:使用sqlloader导入,造成服务器内存分配的问题。
- oracle中的sql%rowcount是啥意思?
- 求在ORACLE中选择最大的3个数值?
- 想请问一下sqlplus在没有用到监听器的时候是怎样与本地数据库连接的,,,,
- 还是中文问题的啊
- 如何在值是null 时,把它当零相加?或不加
- oracle 10g的数据库目录装到了D盘,重装操作系统时怎么做?
- Oracle Listener服务启动失败?
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