Кредит: Leetcode 1264
Таблица: Дружба
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| user1_id | int |
| user2_id | int |
+---------------+---------+
(user1_id, user2_id) is the primary key for this table.
Each row of this table indicates that there is a friendship relation between user1_id and user2_id.
Таблица: Лайки
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| user_id | int |
| page_id | int |
+-------------+---------+
(user_id, page_id) is the primary key for this table.
Each row of this table indicates that user_id likes page_id.
Напишите SQL запрос к рекомендовать страницы пользователю с user_id = 1, используя страницы, которые понравились вашим друзьям. Он не должен рекомендовать страницы, которые вам уже понравились.
Возвращать таблицу результатов в любом порядке без дубликатов.
Формат результата запроса находится в следующем примере:
Friendship table:
+----------+----------+
| user1_id | user2_id |
+----------+----------+
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 2 | 3 |
| 2 | 4 |
| 2 | 5 |
| 6 | 1 |
+----------+----------+
Likes table:
+---------+---------+
| user_id | page_id |
+---------+---------+
| 1 | 88 |
| 2 | 23 |
| 3 | 24 |
| 4 | 56 |
| 5 | 11 |
| 6 | 33 |
| 2 | 77 |
| 3 | 77 |
| 6 | 88 |
+---------+---------+
Result table:
+------------------+
| recommended_page |
+------------------+
| 23 |
| 24 |
| 56 |
| 33 |
| 77 |
+------------------+
User one is friend with users 2, 3, 4 and 6.
Suggested pages are 23 from user 2, 24 from user 3, 56 from user 3 and 33 from user 6.
Page 77 is suggested from both user 2 and user 3.
Page 88 is not suggested because user 1 already likes it.
My код:
select distinct(l1.page_id) as recommended_page
from Likes l1
left join Friendship f
on l.user_id = f.user2_id
where user1_id = 1
UNION
select distinct(l2.page_id) as recommended_page
from Likes l2
left join Friendship f
on l.user_id = f.user1_id
where user2_id = 1
EXCEPT
select page_id as recommended_page
from Likes
where user_id = 1
Пока есть ошибка рядом except. Может ли кто-нибудь помочь мне понять, почему? Спасибо вам огромное!