试一下 select * from tablename where rowid=(select max(rowid) from tablename a where tablename.id=a.id);
to feng_zi 这个怎么可以呢?
我写的是oracle里的,你的库是?
sql server 2000, sorry, 我没说清楚
不好意思,对sql server不熟,sql server好象没有rowid,有外连接吗? 你不是有一个字段aaa不重复吗? select * from tablename where aaa=(select max(aaa) from tablename a where tablename.id=a.id); 可不可以呢?
应该不可以,这样只能选出aaa是固定内容的那些纪录,不是我的要求(所有不重复的纪录)
我想: select * from viewname where id [not] in (...) 这种形式是不是能解决?
select * from table where aaa in (select max(aaa) from table group by id)
select tablename.* from table group by tablename.* having count(任一字段)>1
to: KnowLittle(人傻不要紧,只要肯学习。) 你说的id相同,其它都相同。包括(aaa, col1,col2......col30)中的aaa吗? 若其它指的是col1,col2......col30则可以这样: select max(aaa),col1,...... from viewname group by id 或者 select * from viewname where aaa in (select max(aaa) from viewname group by id)
蓝兄,我怎么贴我的数据呢? to:weixxxp 你的方法和蓝兄一样啊,好像不行。是不是我没有说清楚,再说一遍: 我的视图里面有若干个字段,除了第一个字段aaa以外,其他的字段全部由id决定,我现在想取出id不重复的所有数据,也就是第一个字段的内容我不要了,(或者说我不关心了),最简单的办法就是 select distinct col1,col2......col30 from v_list但是各位给出的这个办法运行的结果是: 比select * from v_list 少一些,但是仍然有重复的id出现,这是因为我的aaa也有重复的情况,(aaa相同但是id不同)
哎呀,这么多高手怎么没有一个劝贴主用最简单的方法呢!只好我劝了,你既然知道 select distinct col1,col2......col30 from v_list 最简单,这个语句效率也不错,不就是在编程时多输入几个字母吗?不用找了,找到的效率也没有这句高。 哈哈,听我的没错。
你参照一下,也许可解决问题
select distinct tablename.* from tablename;
我还有一点可能没说清楚
我有一个id值是可以作为distinct的标准的,就是说id相同,其他都相同,但是第一个字段不同导致有些重复数据(指除掉第一个字段以外的重复)
select * from tablename where rowid=(select max(rowid) from tablename a where tablename.id=a.id);
这个怎么可以呢?
你不是有一个字段aaa不重复吗?
select * from tablename where aaa=(select max(aaa) from tablename a where tablename.id=a.id);
可不可以呢?
select * from viewname where id [not] in (...) 这种形式是不是能解决?
你说的id相同,其它都相同。包括(aaa, col1,col2......col30)中的aaa吗?
若其它指的是col1,col2......col30则可以这样:
select max(aaa),col1,...... from viewname group by id
或者
select * from viewname where aaa in (select max(aaa) from viewname group by id)
to:weixxxp
你的方法和蓝兄一样啊,好像不行。是不是我没有说清楚,再说一遍:
我的视图里面有若干个字段,除了第一个字段aaa以外,其他的字段全部由id决定,我现在想取出id不重复的所有数据,也就是第一个字段的内容我不要了,(或者说我不关心了),最简单的办法就是
select distinct col1,col2......col30 from v_list但是各位给出的这个办法运行的结果是:
比select * from v_list 少一些,但是仍然有重复的id出现,这是因为我的aaa也有重复的情况,(aaa相同但是id不同)
select distinct col1,col2......col30 from v_list
最简单,这个语句效率也不错,不就是在编程时多输入几个字母吗?不用找了,找到的效率也没有这句高。
哈哈,听我的没错。
虽然你比我多两个三角,还是觉得你这个问题问得傻,建议你改名:“人不学习不要紧,只要不傻。”
以上语句很容易让人误解,以为你的第一个字段没有重复,如果你的第一个字段也有重复,那我的语句是不行,但是你的视图中没有一个能唯一标识一行记录的字段吗?如果没有,当然也有其它办法来实现,但还不如distinct简单,而且sqlserver在处理这类distinct问题时也是做过优化,效率不会太低。
to 蓝兄,原来真的是我没说清,因为我的试图是一个权限控制试图,第一个字段是username,后面则是客户信息,表示什么人能看到什么信息。不过还是谢谢你,不过我还是想知道“当然也有其它办法来实现”的办法是什么。
bstrRet->bstrVal = L"Err_Exception";
直接这样写可以吗
你完了,你把五角星的都得罪了,以后你问问题只能由我们这些三角的来答了,呵呵!
create table tab1_bak as select * from tab1;
alter table tab1_bak drop column aaa;
select distinct * from tab1_bak;这个结果满足你的要求了吧?
白兄果然是与众不同
to; Rewiah
兰兄岂会不明白“大愚即大智,大智即大愚”的禅机呢?