如何在sql中检索非groupby列?

8ehkhllq  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(344)

这个问题在这里已经有答案了

sql仅选择列上具有最大值的行[重复](27个答案)
sql:选择不同行时按一个字段中的最小值分组(9个答案)
两年前关门了。
books表有id,author\u fname,author\u lname,title,released\u 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;

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

kiayqfof

kiayqfof1#

你可以用 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
                        );

相关问题