我有以下数据GROUP BY和DISTINCT有什么区别?
empid empname deptid address
--------------------------------
aa76 John 6 34567
aa75 rob 4 23456
aa71 smith 3 12345
aa74 dave 2 12345
a77 blake 2 12345
aa73 andrew 3 12345
aa90 sam 1 12345
aa72 will 6 34567
aa70 rahul 5 34567
我用下面的查询表:
select deptid, EMPID ,EMPNAME ,ADDRESS
from mytable
group by 1,2,3,4
其中给出结果:
deptid empid empname address
------------------------------
1 aa90 sam 12345
2 aa74 dave 12345
2 aa77 blake 12345
3 aa71 smith 12345
3 aa73 andrew 12345
4 aa75 rob 23456
5 aa70 rahul 34567
6 aa76 John 34567
6 aa72 will 34567
而对于查询:
select distinct (deptid),EMPID,EMPNAME,ADDRESS
from mytable
结果集是:
deptid empid empname address
----------------------------
1 aa90 sam 12345
2 aa74 dave 12345
2 aa77 blake 12345
3 aa71 smith 12345
3 aa73 andrew 12345
4 aa75 rob 23456
5 aa70 rahul 34567
6 aa72 will 34567
6 aa76 John 34567
在第二个查询,虽然我已经给DISTINCT
为DEPTID,我怎么就得到了重复DEPTID ...
你能解释一下吗?
我想你需要先解释一下什么结果你期待? DISTINCT适用于所有列。所以即使deptid相同,第二个查询也会为您提供2个唯一的数据行。使用GROUP BY作为计数或总和等聚合函数。 – Rahul 2009-11-12 05:40:50
对于什么数据库? – 2009-11-12 05:41:50
在SELECT子句中按位置引用一列称为序数。 IE:'1,2,3,4组' - 不建议在SELECT列发生变化时使用。 – 2009-11-12 05:43:12