邪恶八进制信息安全团队技术讨论组's Archiver

haicao 2005-7-1 09:48

[求助]如果进行某字段的不重复查询.

有表book字段frame及其它字段,要求进行frame字段的不重复查询,同时列举出所有frame字段不重复的记录.
我试过select distinct frame,* from book这样distinct关键字就不起任何作用了.
在csdn上问过没人给出正确答案,,,来这里看看兄弟们帮下忙吧.

haicao 2005-7-1 09:49

有人回答:
select * from book where frame in (select frame from book group by frame having count(frame)=1)
不过还是不行.
我试过了.

ZV 2005-7-1 10:30

select frame from book group by frame

select frame,count(frame) from book group by frame

第一个是你的要求

第二个是你的要求再加一个统计相同的一共有多少个。

haicao 2005-7-1 16:03

你大概没明白我的意思.
select frame from book group by frame
只选取了frame字段,而我要求选取frame字段不重复的记录也就是还要同时可以访问其它的字段内容.
第二个就更不行了.

ZV 2005-7-1 16:24

select xxx,xxx,xxx,xxx,xxx,xxx,frame from book group by frame

kylin 2005-7-1 19:25

select frame from book as a
where unique(select frame from book as b where b.frame = a.frame)
是 这个意思吗??

haicao 2005-7-2 09:46

[quote][b]下面是引用ZV于07-01-2005 16:24发表的:[/b]
select xxx,xxx,xxx,xxx,xxx,xxx,frame from book group by frame[/quote]
我如是写语句:
select frameno,frame from book group by frame
在查询里执行时提示下:
试图执行的查询中不包含作为合计函数一部分的特定表达式frameno
显然这样写是不对的呀.

haicao 2005-7-2 09:48

[quote][b]下面是引用kylin于07-01-2005 19:25发表的:[/b]
select frame from book as a
where unique(select frame from book as b where b.frame = a.frame)
是 这个意思吗??[/quote]
你误解了我的想法.
我的意思是比如下面:
frame和frameno的内容分别为下面:
a bbbbb
a cccccc
b ddddddd
e ffffffff
e kddddddddd
查询结果要求返回
a bbbbb
b ddddddd
e ffffffff
就是对frame字段进行不重复的查询,如果重复了就取第一条记录.

ZV 2005-7-2 10:12

我不晓得你为什么不能用了,也许数据库不一样.我在mysql里面是可以用的.

我写访问计数器的时候就是这样统计来访Ip的,有的IP访问了不止一次,Ip都是相同的,我就group by IP,显示的就是不一样的IP的记录了,前面加上count(ip),就统计出该IP一共访问多少次.

[code]
$sql = "select id,ip,port,system,time,url,ipaddr,browse,hostname,count(ip) from IP group by ip";
$query = mysql_query($sql) or die(mysql_error());
[/code]

haicao 2005-7-2 17:08

我待会在sqlsrv和access里试试看,感谢zv的帮助!

勇敢的风 2005-7-4 14:58

SELECT name FROM user GROUP BY name HAVING Count(name)=1

赵子岩 2008-5-9 15:47

select frame,min(其它字段) from book group by frame

页: [1]
© 1999-2008 EvilOctal Security Team