SQL的双主键删除语句!

一张表中有两个字段是该表的主键!我想通过一条SQL语句来删除多条记录!就相当于获取到(X1,Y1),(X2,Y2)!怎样用SQL来删除这两条信息!... 一张表中有两个字段是该表的主键!我想通过一条SQL语句来删除多条记录!就相当于获取到(X1,Y1),(X2,Y2)!怎样用SQL来删除这两条信息! 展开
 我来答
匿名用户
2013-08-17
展开全部
对于一个表来说,主键可能由一个字段构成,但是也可能有多个字段构成。后者就是复合主键。你的薪资发放表中主键是(员工号,发放日期),即唯一确定一条记录需要这两个字段的联合取值,缺一不可。故,所以可使用如下的语句 delete from 薪资表where ( 工号 = 'xxx' and 发放日期 = 'xxxdate' ) or (工号 = 'xxx' and 发放日期 = 'xxxdate' ) or ........ 复合主键在使用上不方便,所有一般在有复合主键的表中可以人为增加一个单字段的主键,例如薪资发放id,这样可以简化sql的写法和界面参数的传递,只需传一个id值即可。不需再设计工号和发放日期字段。 例如:delete from 薪资表where 薪资发放id in ('id1','id2','id3',...)当然in也可以用or的等价写法。
匿名用户
2013-08-17
展开全部
你可以将两个主键转换为字符串,然后用一个特殊字符(比如@)连接起来作为一个新的字符串,这种方法可以保证两主键连接成的字符串还是唯一的。delete from XZFF where conver(char(10),FFNY)+"@"+YGH in ( select (char(10),FFNY)+"@"+YGH from XZFF where 满足的删除条件); 或者:delete from XZFF where conver(char(10),FFNY)+"@"+YGH in ('发放日期1@员工号1','发放日期2@员工号2','发放日期3@员工号3');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-08-15
展开全部
把两个Primary key中间加个‘,’组成一个字符串,然后就可以当做只有一个primary key来操作了,代码如下:
DELETE FROM Table
Where key1+','+key2 in (Select key1+‘,’+key2 AS TmpString FROM Table)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-17
展开全部
主键只有一个吧。delete from tb where ( id = 'id1' and dt = 'date1' ) or (id ='id2' and dt = 'date2') or ........
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-17
展开全部
不是蛮难呀!一个子查询就解决啦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式