mysql - 如何编写查询以使用单个查询从 2 个表中选择顶部和底部 3 个值?
问题描述
一个关系数据库包含 2 个表:书籍和作者,每个表包含超过 100 万行。
这些表描述为: Books (Title, Copies Sold) 其中 Title 是主键 Authors (Author, Title) 其中 Title 是指书籍
编写一个 SINGLE 查询,根据售出的副本数显示前 3 位作者和后 3 位作者。
我正在努力解决这个问题,但是我失败了。
select *
from authors a
left join books b on a.authortitle = b.title
order by b.sold;
当我尝试这个时,这是我收到的响应。
select *
from authors a
left join books b on a.authortitle = b.title
order by b.sold
group by author;
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“按作者分组”附近使用正确的语法
我不确定这意味着什么。有谁知道如何解决这个问题?谢谢!
解决方案
您可以使用UNION运算符。像这样的东西(此代码未经测试:D)
(select * from authors a left join books b on a.authortitle = b.title order by b.sold limit 3)
union
(select * from authors aa left join books bb on aa.authortitle = bb.title order by bb.sold desc limit 3)
推荐阅读
- jquery - 使用 optgroup 引导多选下拉菜单
- spring-webclient - 如何使用 Spring WebClient 传递错误正文和状态码
- css - 正则表达式搜索 CSS 以查找类是否存在并且包含规则
- docker - window.ENV vs process.env vs window._env 在 vuejs 应用程序中使用有什么区别?
- c# - Unity-Character 未生成
- java - 处理引发异常的重复参数检查
- c++ - c++ - 如何在C++中将继承类中的普通方法更改为静态方法?
- macos - 有没有办法在另一个应用程序中到达对象?
- javascript - PHP:从 JSON 创建 JS 脚本(将 JSON 转换为 JS 对象)
- reactjs - 在 createMaterialTopTabNavigator ReactNavigation 5 中添加图标