需要有关条件SELECT语句的帮助

Eth*_*han 5 sql sql-server select conditional

我有一个带有select语句的存储过程,如下所示:

SELECT author_ID,
       author_name,
       author_bio
FROM   Authors
WHERE author_ID in (SELECT author_ID from Books)
Run Code Online (Sandbox Code Playgroud)

这限制了具有书籍记录的作者的结果.这是Books表:

Books:
book_ID INT,
author_ID INT,
book_title NVARCHAR,
featured_book BIT
Run Code Online (Sandbox Code Playgroud)

我想要做的是有条件地选择每个作者的特色书的ID作为上述选择语句的一部分,如果没有特定作者的书籍,请选择第一本(前1)书的ID作者来自书籍表.我该如何处理?

小智 1

您可以使用对数据进行排序并使用 top 语句的子查询...

类似的东西,

SELECT  author_ID, 
         author_name, 
         author_bio
         , (Select top 1 Book_ID from Books where Authors.Author_ID=Books.Author_ID order by Featured_book desc)
 FROM    Authors 
 WHERE author_ID in (SELECT author_ID from Books) 
Run Code Online (Sandbox Code Playgroud)