在查询时默认显示所有的行,包括有重复值的行。
DISTINCT的作用是消除重复行关键字,放在整查询列表的最前面。
作用范围:整个查询列表的组合。
消除重复行后会按字段的特性,做升序排列。(执行过程:先排序,再消除重复)
以前以为distinct是消除查询第一列的重复,原来不是这样,而是消除整行的数据重复,比如
select distinct department_id from employees;
返回结果是:
DEPARTMENT_ID
-------------
10
20
30
40
50
60
70
80
90
100
110
12 rows selected.
上面的department_id没有重复,下面一句在上面基础上多查询一列job_id:
select distinct department_id,job_id from employees order by department_id;
返回结果是:
DEPARTMENT_ID JOB_ID
------------- ----------
10 AD_ASST
20 MK_MAN
20 MK_REP
30 PU_CLERK
30 PU_MAN
40 HR_REP
50 SH_CLERK
50 ST_CLERK
50 ST_MAN
60 IT_PROG
70 PR_REP
80 SA_MAN
80 SA_REP
90 AD_PRES
90 AD_VP
100 FI_ACCOUNT
100 FI_MGR
110 AC_ACCOUNT
110 AC_MGR
SA_REP
20 rows selected.
返回了20行,并不是消除第一列重复,而是整一行消除重复,上面即是department_id+job_id没有重复。
DISTINCT的作用是消除重复行关键字,放在整查询列表的最前面。
作用范围:整个查询列表的组合。
消除重复行后会按字段的特性,做升序排列。(执行过程:先排序,再消除重复)
以前以为distinct是消除查询第一列的重复,原来不是这样,而是消除整行的数据重复,比如
select distinct department_id from employees;
返回结果是:
DEPARTMENT_ID
-------------
10
20
30
40
50
60
70
80
90
100
110
12 rows selected.
上面的department_id没有重复,下面一句在上面基础上多查询一列job_id:
select distinct department_id,job_id from employees order by department_id;
返回结果是:
DEPARTMENT_ID JOB_ID
------------- ----------
10 AD_ASST
20 MK_MAN
20 MK_REP
30 PU_CLERK
30 PU_MAN
40 HR_REP
50 SH_CLERK
50 ST_CLERK
50 ST_MAN
60 IT_PROG
70 PR_REP
80 SA_MAN
80 SA_REP
90 AD_PRES
90 AD_VP
100 FI_ACCOUNT
100 FI_MGR
110 AC_ACCOUNT
110 AC_MGR
SA_REP
20 rows selected.
返回了20行,并不是消除第一列重复,而是整一行消除重复,上面即是department_id+job_id没有重复。