以显示属于不同作者的书籍的方式进行查询

Posted

技术标签:

【中文标题】以显示属于不同作者的书籍的方式进行查询【英文标题】: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 溅射您的代码。这在任何地方都不是“最好的”。 【参考方案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

【讨论】:

以上是关于以显示属于不同作者的书籍的方式进行查询的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 查询中组合字段

第二次冲刺

第二次冲刺

第二次冲刺

在 Django 中使用两个以不同方式格式化的查询集进行分页

SQL:查询以显示每个属性有多少用户(分组)