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
我有 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