我的SQL查询如下所示
if exists(select 1 from mytable2 T,mytable M where T.bookid=M.bookid)
begin
insert into books(col1,col2)
select col1,col2 from library
end
else
begin
insert into booknotfound
select col1,col2 from library
end
说Library是一个源表。只有当BookId出现在“mytable”中时我才会插入books表中,否则我想在“booknotfound”表中插入。上面的查询在books表中插入记录而不是在“booknotfound”表中。所以我想做的是我在为“mytable2”中的每条记录寻找bookid这样可能吗?
答案 0 :(得分:2)
我认为你正在尝试做的事情比你写的/期望你写的更多。 (我猜)。
您要检查的不是每一行,而是所有书籍。请记住,SQL对数据SET(可以是单行或多行)进行操作。
所以你要做的就是问
如果返回1
select 1 from mytable2 T,mytable M where T.bookid=M.bookid
然后将Library中的所有元素插入Books。
如果返回0,则将库中的所有元素插入未找到的图书中。
我认为你要做的是做基于游标的操作(不可建议),或做两个不同的设定操作,如
INSERT col1, col2 INTO books FROM liberary WHERE <INSERT YOUR WHERE CLAUSE>
INSERT col1, col2 INTO booknotfound FROM liberary WHERE <INSERT YOUR WHERE CLAUSE>
你的WHERE子句的细节难以从你所写的内容中推断出来,因为我没有看到库与你的“mytable”和“mytable2”之间的任何联系 (你错过了一些信息吗?)
我的猜测是,你在mytable的图书馆里面的图书应该被找不到,图书馆里的图书应该放在书本里吗?