这个 SQL 怎么写? 急!急!急!急!(50分)

  • 主题发起人 主题发起人 netkk
  • 开始时间 开始时间
N

netkk

Unregistered / Unconfirmed
GUEST, unregistred user!
表中有A,B,C 3列, 全是字符型;
其中 C 列可能有复值;
怎样用最快的方式取出 C 列中没有重复值的记录(不考虑A,B 列,只取其随机的值);
并计算重复的记录数。

我已用过几种方法,但觉得不够快,也不方便(因为还要加其它条件)
我用过的方法,如:
A: select min(a), min(b), c , count(*) from table group by c

用过FOXPRO的朋友知道,FOXPRO中可以用“SELECT A, B, C, COUNT(*) GROUP BY C”;
但在 SQL 7 或 Access 中不可以这样。
 
怎样用最快的方式取出 C 列中没有重复值的记录(不考虑A,B 列,只取其随机的值);
并计算重复的记录数。

既要不重复的记录,又要“计算重复的记录数”,什么意思?
 
select distinct ......
 
我觉得你的方法已经是最简洁快速的了
 
Select Min(A), Min(B), C , Count(*) From Table Group By C 这样的写法已经很规范,
相反 FOXPRO “SELECT A, B, C, COUNT(*) GROUP BY C”;的写法就值得质疑了,
虽然你主观上对 A, B 没有限制,只取随机的就可以,但是 Database Server 并不理解你的
意图,它需要你明确指定选择多个值中的哪一个:Min 、Max、Sum、Avg 等等。

 
既然A,B是随机的,那就不要选了
select 1 as A,2 as B,count(distinct c) ,c from table group by c
 
oracle:
select a,b,count(c) from table group by c having count(c)=1;
 
多人接受答案了。
 
后退
顶部