在SQL中的UPDATE语句中混合IF语句

Jav*_*per 2 sql t-sql sql-server sql-server-2008

我正在研究SQL Server 2008数据库.该数据库有两个表.

Book
ID
BookCategoryID
Name
IsFlagged

BookCategory
ID
Name
IsFlagged
Run Code Online (Sandbox Code Playgroud)

我需要更新BookCategory表,以便在标记类别中的任何书籍时,BookCategory记录上的IsFlagged属性设置为true.否则,如果类别中没有任何标记的书籍,我需要将BookCategory记录中的IsFlagged属性设置为false.有没有办法做到这一点?我似乎无法弄明白.我正在尝试类似下面的事情,但一直在追寻死胡同.

UPDATE
  BookCategory
SET
  IsFlagged = (SELECT COUNT(*) FROM Book WHERE [IsFlagged]=1 AND [BookCategory]=?)
Run Code Online (Sandbox Code Playgroud)

Mic*_*son 8

UPDATE bc
SET IsFlagged = CASE WHEN b.ID IS NULL THEN 0 ELSE 1 END
FROM
    BookCategory bc LEFT JOIN
    Book b ON b.BookCategoryID = bc.ID AND b.IsFlagged = 1
Run Code Online (Sandbox Code Playgroud)