看过自己文章的作者
LeetCode 1148 · 同表列比较、DISTINCT
面试怎么回答
WHERE author_id = viewer_id,SELECT DISTINCT author_id 并排序。同一行内两列比较,不需要自连接。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
题意
浏览表每行表示某个读者在某天看了某位作者的某篇文章。找出看过自己文章的作者 ID,去重后升序输出。
表结构
- Views:article_id、author_id、viewer_id、view_date;没有主键,可能有重复行
思路
「看自己的文章」就是同一行里 author_id = viewer_id。过滤后去重、排序即可。
参考解法
select distinct author_id id
from Views
where author_id= viewer_id
order by id
易错点
- 同一作者可能多次看自己的文章,要 DISTINCT。