在临时表中更新SQL WHERE BOOKNO = BOOK号

时间:2017-04-13 11:50:30

标签: sql sql-server common-table-expression

我有一个表在其他表中有bookauthorID的书籍是作者

BOOK

ID    BOOK NAME   AUTHORID
 0      A           NULL
 1      B           NULL
 2      C           NULL

AUTHOR

 BOOKID     AUTHORID

 0            123
 1            1234
 2            12345

现在我必须在作者表中填写Book表中的AuthorID列,其中BOOK.ID = AUTHOR.BOOKID,因为BOOK.AUTHORID列已在表格中添加

到目前为止

我有这个

WITH ALLBOOKSANDAUTHORIDS AS
(
SELECT * FROM BOOK INNER JOIN AUTHOR on BOOK.ID = AUTHOR.BOOKID
)

我现在有一个表格,告诉每本书及其作者ID

但是如何使用正确的值更新BOOK.AUTHORID,从Author表中获取值并将它们放入书中?

它就像一个for循环,转到Book表中的每一行并检查Author表中的哪个ID匹配,然后获取AUTHORID并在book表中更新它。

请告诉我们如何编写SQL?

谢谢

艾登

5 个答案:

答案 0 :(得分:1)

您可以使用update / join

执行此操作
update b
    set b.authorid = a.authorid
    from book b join
         author a
         on b.id = a.bookid
    where b.authorid is null;

答案 1 :(得分:1)

只需加入这些表并进行更新即可。

update book b join author a on (a.bookid=b.id)
    set b.AUTHORID=a.AUTHORID

答案 2 :(得分:1)

首先ID不能 Zero ,而你的问题可能是simaple带连接的更新语句

Update B
SET  B.AUTHORID=A.AUTHORID
FROM Book B
INNER JOIN  AUTHOR A ON A.BOOKID = B.ID

答案 3 :(得分:1)

UPDATE BOOK
SET AUTHORID = AUTHOR.AUTHORID
FROM BOOK INNER JOIN AUTHOR ON BOOK.ID = AUTHOR.BOOKID

答案 4 :(得分:0)

我们也可以这样做

更新b 设置b.AUTHORID =(从AUTHOR中选择前1位a.AUTHORID a 其中b.ID = a.BOOKID)