SQL 查询检查 ID 是否属于另一个 table

SQL Query check if ID is part of another table

我有 2 个表:

tbl图书: 书号、书名

tbl最喜欢的: FavoriteID, UserID, BookID

我想开发一个 SQL 查询 Select BookID、Title、IsFavorite (true|false),同时将 UserID 作为参数。

如果在 tblFavorite 中有包含此 BookID 和给定 UserID 的行,则应检查 Foreach BookID。 -> true/false

使用LEFT JOIN和CASE表达式,如果tblFavorite(NULL)中没有记录,则显示False,否则为True。

SELECT B.BookID, B.Title, CASE WHEN FavoriteID IS NULL THEN 'False' ELSE 'True' END AS IsFavorite
FROM tblBook B
LEFT JOIN tblFavorite F on B.BookID = F.BookID

您可以使用相关子查询:

select b.*, 
    case when exists (select 1 from tblfavorite f where f.bookid = b.bookid and f.userid = ?)
        then 1
        else 0
    end as isfavorite
from tblbook b

问号代表您为其生成报告的用户的 ID。在支持将条件评估为布尔值或整数的数据库中(例如 MySQL 或 Postgres),您可以分配 case 表达式:

select b.*, 
    exists (select 1 from tblfavorite f where f.bookid = b.bookid and f.userid = ?) as isfavorite
from tblbook b