我有表 A 和表 B 。它们之间的关系使用中间表 AB 完成,它们存储两者的ID。
Table A
ID integer
Value varchar(MAX)
Table B
ID integer
Value varchar(MAX)
Table AB
AID integer
BID integer
我可以使用JOIN
选择所需的数据,但如何将数据写入AB
?
我的意思是,如果我得到AID
和integer
的列表(作为自定义类型 Array_Integer table(ID integer)
完成),BID
,如何使用收到的AB
列表更新BID
中的关系?
我可以做很多脏事和手动工作,但我正在寻找更真实的方法。
UPD:检查pastebin上的架构 - http://pastebin.com/BeKm2h3F
答案 0 :(得分:0)
如果我理解你的错误,那么这个查询应该是你需要的。
INSERT INTO AB
SELECT * FROM
(
-- Here you write your AID value instead of 1
SELECT 1 AS AID
) AS a1
CROSS JOIN
(
-- Query that returns list if id's from table B
SELECT ID AS BID FROM B WHERE ID < 5
)
答案 1 :(得分:0)
您可以按如下方式更新TableAB:
declare @Aid int
declare @Bid int
insert into TableA(value)
select 'abcd'
set @Aid = ident_currect('TableA')
insert into TableB(value)
select 'xyz'
set @Bid = ident_currect('TableB')
insert into TableAB -- This will update your junction table
select @Aid,@Bid
我假设你的tableA和TableB有标识列。您也可以使用scope_identity()而不是ident_currect()