持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情
leetcode刷题1148-文章浏览1
前文
本文内容为leetcode数据库类型题目,主要考查对于查询相关知识的掌握。本文解题方案为个人理解,并非最佳解决方案。该题目序号为1148,题目链接为leetcode.cn/problems/ar…
题目信息
Views 表:
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| article_id | int |
| author_id | int |
| viewer_id | int |
| view_date | date |
+---------------+---------+
此表无主键,因此可能会存在重复行。 此表的每一行都表示某人在某天浏览了某位作者的某篇文章。 请注意,同一人的 author_id 和 viewer_id 是相同的。
请编写一条 SQL 查询以找出所有浏览过自己文章的作者,结果按照 id 升序排列。
题目分析
根据当前题目给出的表信息,我们知道有一张表,表中包含了文章id、文章作者id、文章阅读者id以及文章的阅读时间。根据题目中的要求,我们需要查找所有浏览了自己文章的作者。根据表中的字段对应,很容易进行具像化的理解,也就是阅读了自己文章的作者,相当于在表中出现一条记录,该记录的作者id与阅读者id相等。那么我们只要根据条件查找作者id与阅读者id相等的记录即可。而与此同时,文章可以出现多次,也就是同一个作者可以有多篇文章,或同一篇文章被同一个人看了多次。而我们的目标只是想要查看看了自己文章的作者,因此采用distinct关键字进行去重复操作即可。这是我们在条件语句中采取的去重复操作,实际上本题目同样可以采用group by进行去重,直接对作者id进行分组即可,并在分组前的条件语句中指定作者与阅读者id相同。至此,题目解答完毕。
解题答案
# Write your MySQL query statement below
select distinct author_id as id
from Views
where author_id = viewer_id
order by author_id
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。