为了账号安全,请及时绑定邮箱和手机立即绑定

根据TableA的结果,Delete TableB 中对应的项

根据TableA的结果,Delete TableB 中对应的项

哆啦的时光机 2018-12-07 13:19:26
关系Table 结构: IF OBJECT_ID('dbo.BT_LinksRolesRelation') IS NOT NULL DROP TABLE dbo.BT_LinksRolesRelation;GOCREATE TABLE BT_LinksRolesRelation(Role_Id INT REFERENCES BT_Role(Role_Id),Link_Id INT REFERENCES BT_Link(Link_Id),PRIMARY KEY(Role_Id, Link_Id)) 临时中间表@tempRoleLinkTable:DECLARE @tempRoleLinkTable TABLE(Role_Id int,Link_Id int) 给中间表@tempRoleLinkTable插入值,条件是外界传入值 Link_Id (3,14,25,36),Role_Id = 3,这些LInk_Id 取值个数 会变化,Role_Id取值会变化,但结构是不变的;如果外界传入的值构成的那条记录在关系Table中存在,就把 条记录保存到临时表@tempRoleLinkTable中:INSERT INTO @tempRoleLinkTable(Role_Id,Link_Id) SELECT Role_Id,Link_Id FROM BT_LinksRolesRelation AS BTWHERE BT.Role_Id = 3 AND BT.Link_Id IN (3,14,25,36) 如果关系表中Link_ID 有 3,14,25三条,  则插入到临时表中的数据为 3,14,25;  36这条数据在关系表中不存在,那么就没有被插入临时表中去. 从关系表中删除条目,这些要被删除的条目是刚被先出来插入临时表中的条目: DELETE FROM BT_LinksRolesRelation WHERE (Role_Id,Link_Id) in(  SELECT  Role_Id,Link_Id  FROM @tempRoleLinkTable )上面不能够根据条件去删除,错误出现在什么地方呢? 正确的删除SQL语句应该怎么写呢? 求大侠指点。。。
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

换了一种方法来解决这个问题,以前想批次性处理请求! 现在用ajax一个一个的处理请求,所以传入的Link_ID是一个了,后台再用存储过程来解决这个问题,唯一不好的就是访问数据库次数多了,花时间大了一点儿,而存储过程!又稍微缓解了一下..
查看完整回答
反对 回复 2018-12-09
?
交互式爱情

TA贡献1712条经验 获得超3个赞

语法 DELETE FROM 表名称 WHERE 列名称 = 值 ====================================== 比如说、、删除某行 DELETE FROM Person WHERE LastName = 'Wilson' 或者 删除所有行 DELETE FROM table_name 或者: DELETE * FROM table_name
查看完整回答
反对 回复 2018-12-09
  • 3 回答
  • 0 关注
  • 508 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信