前言
练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。
今日题目:
1148.文章浏览 I
表:Views
| 列名 | 类型 |
|---|---|
| article_id | int |
| author_id | int |
| viewer_id | int |
| view_date | date |
此表可能会存在重复行。(换句话说,在 SQL 中这个表没有主键)此表的每一行都表示某人在某天浏览了某位作者的某篇文章。请注意,同一人的 author_id 和 viewer_id 是相同的。
请查询出所有浏览过自己文章的作者。结果按照 id 升序排列。
我那不值一提的想法:
首先梳理表内容,题干只给了一张浏览表,记录了文章id,作者id,以及浏览者id,和浏览日期。其次分析需求,查询出所有浏览过自己文章的作者,id升序排列。因为同一人的author_id和viewer_id是相同的,所以作者如果浏览过自己的作品,那么作者id和浏览者id肯定是相同的,直接查询author_id = viewer_id的结果,然后对作者id进行排序,得到最终结果,因为order by默认是升序,所以不用再添加参数。这里注意需要避免出现重复行,所以我们还需要在查询结果前面加个distinct。
select distinct author_id as id
from Views
where author_id = viewer_id
order by author_id
结果:

总结:
能运行就行。
940

被折叠的 条评论
为什么被折叠?



