mysql - 如何在 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;
但它给出了错误书的标题。如何修复查询?
解决方案
您可以使用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
);
推荐阅读
- javascript - 未捕获的类型错误:获取计算机的本地 IP 地址时,无法在 javascript 代码中读取 null 的属性“1”
- mysql - 创建表,将某些列的类型定义为某个函数的返回类型
- python - 我正在实现“异或”功能,但它失败了
- java - 如何解决错误以及如何使用 oops 概念做得更好?
- javascript - 是否可以在 iFrame 中伪造国家/地区?
- html - CSS:“transform:translate”突然停止在chrome mobile中工作
- visual-studio - 运行时权限检查 Xamarin
- python-3.x - 简单的四舍五入小数位
- node.js - 本节有什么问题
- flutter - 颤振 setState 不会重新渲染我的孩子有状态小部件