我正在使用SQL Server 2008数据库。该数据库有两个表。
Book
ID
BookCategoryID
Name
IsFlagged
BookCategory
ID
Name
IsFlagged
我需要更新BookCategory表,以便如果标记了类别中的任何书籍,则BookCategory记录上的IsFlagged属性将设置为true。否则,如果类别中没有标记的书,则需要将BookCategory记录上的IsFlagged属性设置为false。有没有办法做到这一点?我似乎无法弄清楚。我正在尝试类似以下的方法,但一直处于死胡同。
UPDATE
BookCategory
SET
IsFlagged = (SELECT COUNT(*) FROM Book WHERE [IsFlagged]=1 AND [BookCategory]=?)
最佳答案
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
关于sql - 在SQL的UPDATE语句中混合IF语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9949593/