astak16/blog-mysql

53 文章浏览 Ⅰ

Opened this issue · 0 comments

题目

题目链接:文章浏览 Ⅰ

此表的每一行都表示某人在某天浏览了某位作者的某篇文章。

请注意,同一人的 author_idviewer_id 是相同的。

编写一条 SQL 查询以找出所有浏览过自己文章的作者,结果按照 author_id 升序排列。

create table  views (
  article_id int, 
  author_id int, 
  viewer_id int, 
  view_date date
);

insert into views (article_id, author_id, viewer_id, view_date) values 
(1, 3, 5, '2019-08-01'),
(1, 3, 6, '2019-08-02'),
(2, 7, 7, '2019-08-01'),
(2, 7, 6, '2019-08-02'),
(4, 7, 1, '2019-07-22'),
(3, 4, 4, '2019-07-21'),
(3, 4, 4, '2019-07-21');

SQL:方法一

select distinct author_id id from views where author_id = viewer_id order by id;

解析

因为同一个人的 author_idviewer_id 是相同的,所以直接筛选 author_id = viewer_id ,就能找出浏览过自己文章的作者了。