【问题标题】:SELECT Column Value based on Subselect if record exists如果记录存在,则基于子选择选择列值
【发布时间】:2020-02-05 05:16:36
【问题描述】:

我定义了以下表格。

如果读者有一本最喜欢的书,则该读者/书对的 ReaderFavorites 表中将存在一条记录。

我想创建一个视图,当通过 ReaderId 过滤时返回以下数据集

Book.Id
Book.Title
Book.Author
IsFavorite ( a bit field, true if a record exists, false otherwise)

View 会像这样被调用:

    SELECT * FROM BookView WHERE ReaderId = [somevalue]

我似乎找不到如何创建这样的查询。

【问题讨论】:

  • 提示case when exists
  • 你做过研究吗???网络上一定有大量示例。
  • 这个问题没有显示任何研究尝试。

标签: sql sql-server tsql join left-join


【解决方案1】:

您可以使用 LEFT JOIN 和条件赋值:

SELECT 
    b.Id,
    b.Title,
    b.Author,
    CAST(IIF(rf.bookid IS NULL, 0, 1) as BIT) IsFavorite
FROM
    book b
    LEFT JOIN ReaderFavorites rf
        ON rf.BookId = b.Id
        AND rf.AuthorId = @AuthorId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2020-12-06
    • 1970-01-01
    • 2012-07-03
    • 2014-02-21
    相关资源
    最近更新 更多