这样的sql语句如何写?

jordi2014 2005-05-13 07:11:40
表Table1
field1 field2 field3
1 1 2
1 1 3
2 2 4
2 2 5
3 3 6


我想对表Table1建立field1和field2的主键,可是有重复的,数据库不允许建立,所以首先须删除掉重复的。

操作后变成

1 1 2
2 2 4
3 3 6

如何用一条sql语句完成此操作?
...全文
126 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Evelyn_ever 2005-05-14
  • 打赏
  • 举报
回复
Delete A from Table1 A Where Exists(Select * from Table1 Where field1=A.field1 And field2=A.field2 And field3<>A.field1)
修改一下
chichunhua 2005-05-14
  • 打赏
  • 举报
回复
樓上兩位已經解決你的問題了
jkx01whg 2005-05-14
  • 打赏
  • 举报
回复
up
Well 2005-05-13
  • 打赏
  • 举报
回复
Create table table1
(field1 Int,
field2 Int,
field3 varchar(10))
--插入数据
Insert table1 Values(1, 1, 2)
Insert table1 Values(1, 1, 3)
Insert table1 Values(2, 2, 4)
Insert table1 Values(2, 2, 5)
Insert table1 Values(3, 3, 6)
Insert table1 Values(4, 4, ' ' )
Insert table1 Values(4, 4, null)
GO

delete A
from table111 A,table111 B
where A.field1=B.field1 and A.field2=B.field2 and isnull(A.field3,1)<isnull(B.field3,1)

jordi2014 2005-05-13
  • 打赏
  • 举报
回复
我找到一个办法,就是把是空格的删掉,null的保留
delete from table1 where field3=''
paoluo 2005-05-13
  • 打赏
  • 举报
回复
这种情况,你怎么保留呢??
jordi2014 2005-05-13
  • 打赏
  • 举报
回复
谢谢paoluo(一天到晚游泳的鱼)


可是我现在遇到如下情况时,还是不能建立主键:

field1 field2 field3
4 4 (空格)
4 4 Null

这种情况该如何删除呢?
paoluo 2005-05-13
  • 打赏
  • 举报
回复
--建立测试环境
Create table Table1
(field1 Int,
field2 Int,
field3 Int)
--插入数据
Insert Table1 Values(1, 1, 2)
Insert Table1 Values(1, 1, 3)
Insert Table1 Values(2, 2, 4)
Insert Table1 Values(2, 2, 5)
Insert Table1 Values(3, 3, 6)
GO
--测试
Select * from Table1
Delete A from Table1 A Where Exists(Select * from Table1 Where field1=A.field1 And field2=A.field2 And field3<A.field3)
Select * from Table1
--删除测试环境
Drop table Table1
--结果
/*
field1 field2 field3
1 1 2
1 1 3
2 2 4
2 2 5
3 3 6

field1 field2 field3
1 1 2
2 2 4
3 3 6
*/
paoluo 2005-05-13
  • 打赏
  • 举报
回复
Delete A from Table1 A Where Exists(Select * from Table1 Where field1=A.field1 And field2=A.field2 And field3<A.field3)
paoluo 2005-05-13
  • 打赏
  • 举报
回复
Delete A from Table1 A Where Exists(Select * from Table1 Where field1=A.field1 And field2=A.field2 And field3<A.field1)

34,594

社区成员

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

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