首页 > 解决方案 > 如何在 SQL 中检索非分组列?

问题描述

Books 表有 id、author_fname、author_lname、title、release_year。要显示作者的名字和姓氏以及他的书出版的最短年份,查询将是

SELECT author_fname,
       author_lname,
       Min(released_year)
FROM books
GROUP BY author_lname,
         author_fname;

但是,如果我们还想显示每个作者的第一本书的标题怎么办?是否可以在不使用嵌套查询的情况下做到这一点?

我试过这个:

SELECT author_fname, 
       author_lname, 
       title,
       Min(released_year) 
FROM   books 
GROUP  BY author_lname, 
          author_fname;

但它给出了错误书的标题。如何修复查询?

标签: mysqlsql

解决方案


您可以使用correlated子查询:

select b.*
from books b
where b.released_year = (select min(b1.released_year) 
                         from books b1 
                         where b1.author_lname = b.author_lname and b1.author_fname = b.author_fname
                        );

推荐阅读