[英]SQL WHERE multiple criteria
問題:編寫一個 SQL 查詢,使用您朋友喜歡的頁面向 user_id = 1 的用戶推薦頁面。 它不應該推薦您已經選擇的頁面。
SELECT DISTINCT page_id recommended_page
FROM Likes
WHERE user_id IN(
SELECT user1_id
FROM friendship
WHERE user2_id = 1
UNION ALL
SELECT user2_id
FROM friendship
WHERE user1_id = 1)
AND user_id != 1
為什么這不正確?
相反,我必須尋找一個用戶從不喜歡的頁面來擺脫 88 ,這是用戶喜歡並且應該被排除的頁面。 為什么我不能只用 user_id 過濾它!= 1
以下是正確答案:
Correct answer:
SELECT DISTINCT page_id recommended_page
FROM Likes
WHERE user_id IN(
SELECT user1_id
FROM friendship
WHERE user2_id = 1
UNION ALL
SELECT user2_id
FROM friendship
WHERE user1_id = 1)
AND page_id NOT IN
#Pages user1 didn't like before
(SELECT page_id
FROM Likes
WHERE user_id = 1)
您可以嘗試為子查詢的結果表提供一個虛擬名稱。 喜歡:
SELECT DISTINCT page_id recommended_page FROM Likes WHERE user_id IN( SELECT user1_id FROM friendship WHERE user2_id = 1 UNION ALL SELECT user2_id FROM friendship WHERE user1_id = 1) Customfriendship AND user_id != 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.