【问题标题】:Query in a way to show books that belong to different authors以显示属于不同作者的书籍的方式进行查询
【发布时间】:2021-09-22 21:03:30
【问题描述】:
select subject, authors, authorID
from library with (nolock)
inner join authors with (nolock) bookid = bookauthorID
where subject = 'Russian History'

所以我想写一个查询来显示所有写过俄罗斯历史书籍的作者,如果有超过 2 个不同的作者写过这个主题,我想将列 categoryID 显示为“多个”,反之亦然作为“单身”。

例子:

CategoryID  Author
2009940     Steve Cohen

从上面的 ID 中,它会返回为单一的,因为这个 ID 只有一个独特的作者。

最好使用count(min) 实现这一目标吗?

【问题讨论】:

  • 是您的 select 语句中作者的实际列名吗?
  • 停止使用nolock 溅射您的代码。这在任何地方都不是“最好的”。

标签: sql sql-server tsql group-by


【解决方案1】:

您没有提供所需的输出,我也不相信您已为表/列共享了适当的对象,但您可以根据需要进行更改。

您只需要引用一个COUNT(DISTINCT columnName) 来查看它是否大于 1。

select 
    subject
    , CASE WHEN COUNT(DISTINCT authors) = 1 THEN 'single' 
        WHEN COUNT(DISTINCT authors) > 1 THEN 'multiple' 
        END AS Authors
from library 
inner join authors bookid = bookauthorID
where subject = 'Russian History'
GROUP BY subject

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2019-10-11
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多