弱问sql简单问题

BigSoy 2012-04-28 08:09:54
我想从表中删除所有不同value的行,但是具有相同value的行只删除第一行,请问如何操作?
...全文
152 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
@信心 2012-04-29
  • 打赏
  • 举报
回复
大致是这样的:先求出每种值行数,然后保留第一条记录。
wjfxyj 2012-04-29
  • 打赏
  • 举报
回复
3楼正解
BigSoy 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

参考 http://msdn.microsoft.com/en-us/library/ms175972(v=sql.105).aspx

官方文档是最权威的了.
[/Quote]

看了一遍还是不太明白……好弱= =

您能简单说一下其中的原理么。。。

我就是不太明白上面那个程序中,为什么t中删除一行,bs中也会被删除一行。。
唐诗三百首 2012-04-29
  • 打赏
  • 举报
回复
BigSoy 2012-04-29
  • 打赏
  • 举报
回复
谢谢您!

还有个问题不太明白,t应该是1个临时视图吧?

那么,为什么从t中删除一项会把bs表中的一项删除呢?

是所有的临时视图默认都有这样的特点吗?

[Quote=引用 3 楼 的回复:]

SQL code

create table bs(value varchar(1))

insert into bs
select 'a' union all
select 'b' union all
select 'b' union all
select 'c' union all
select 'c' union all
select 'c'

select value from bs
……
[/Quote]
晓风斜阳 2012-04-29
  • 打赏
  • 举报
回复
对三楼进行一点修正
create table bs(value varchar(1))

insert into bs
select 'a' union all
select 'b' union all
select 'b' union all
select 'c' union all
select 'c' union all
select 'c'
select * from bs

;with t as
( select row_number() over(partition by value order by (select 0)) rn,*
from bs
)
DELETE from t where rn>1
SELECT * FROM bs
唐诗三百首 2012-04-28
  • 打赏
  • 举报
回复

create table bs(value varchar(1))

insert into bs
select 'a' union all
select 'b' union all
select 'b' union all
select 'c' union all
select 'c' union all
select 'c'

select value from bs

value
-----
a
b
b
c
c
c


-- 执行一次操作后,表变成{b,c,c}
;with t as
( select row_number() over(partition by value order by (select 0)) rn
from bs
)
delete from t where rn=1

select value from bs

value
-----
b
c
c


-- 再执行一次,变成{c}
;with t as
( select row_number() over(partition by value order by (select 0)) rn
from bs
)
delete from t where rn=1

select value from bs

value
-----
c
BigSoy 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

具体点
[/Quote]

比如,表中有{a,b,b,c,c,c},我想执行一次操作后,表变成{b,c,c}
再执行一次,变成{c}

我有个想法是:先找到表中不重复的元组{a,b,c},然后用except all操作一下即可实现

但是sql2008好像不支持except all操作,不知道该怎么办呀?
小天 2012-04-28
  • 打赏
  • 举报
回复
具体点

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧