SQL的双主键删除语句!
一张表中有两个字段是该表的主键!我想通过一条SQL语句来删除多条记录!就相当于获取到(X1,Y1),(X2,Y2)!怎样用SQL来删除这两条信息!...
一张表中有两个字段是该表的主键!我想通过一条SQL语句来删除多条记录!就相当于获取到(X1,Y1),(X2,Y2)!怎样用SQL来删除这两条信息!
展开
5个回答
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)
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
展开全部
不是蛮难呀!一个子查询就解决啦!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询