[求助]如果进行某字段的不重复查询.
有表book字段frame及其它字段,要求进行frame字段的不重复查询,同时列举出所有frame字段不重复的记录.我试过select distinct frame,* from book这样distinct关键字就不起任何作用了.
在csdn上问过没人给出正确答案,,,来这里看看兄弟们帮下忙吧. 有人回答:
select * from book where frame in (select frame from book group by frame having count(frame)=1)
不过还是不行.
我试过了. select frame from book group by frame
select frame,count(frame) from book group by frame
第一个是你的要求
第二个是你的要求再加一个统计相同的一共有多少个。 你大概没明白我的意思.
select frame from book group by frame
只选取了frame字段,而我要求选取frame字段不重复的记录也就是还要同时可以访问其它的字段内容.
第二个就更不行了. select xxx,xxx,xxx,xxx,xxx,xxx,frame from book group by frame select frame from book as a
where unique(select frame from book as b where b.frame = a.frame)
是 这个意思吗?? [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
显然这样写是不对的呀. [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字段进行不重复的查询,如果重复了就取第一条记录. 我不晓得你为什么不能用了,也许数据库不一样.我在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] 我待会在sqlsrv和access里试试看,感谢zv的帮助! SELECT name FROM user GROUP BY name HAVING Count(name)=1 select frame,min(其它字段) from book group by frame
页:
[1]
