我正在使用 MySQL 作為資料庫構建一個簡單的應用程式。我有一個包含不同資訊的用戶表,但我也有一個朋友表。每個用戶都有自己的 ID,在發起請求時會在朋友表中參考該 ID。
我的朋友表很簡單:
id int NO PRI auto_increment
date datetime NO CURRENT_TIMESTAMP DEFAULT_GENERATED
user_one_id int NO
user_two_id int NO
request_status tinyint NO
我的問題是在嘗試查詢我的表以查找特定用戶的朋友時。我在以下查詢中的兩個子查詢都可以自己正常作業,但是當我將它們包含在主查詢中時,我沒有得到任何結果。沒有錯誤,但也沒有結果。
如果登錄用戶的 ID 為 1,則 -
SELECT id, display_name, join_date, profile_image_url
FROM user WHERE id IN
(SELECT user_one_id FROM friend WHERE user_two_id = 1 AND request_status = 1)
AND id IN
(SELECT user_two_id FROM friend WHERE user_one_id = 1 AND request_status = 1);
該查詢應該說明用戶的 ID 在任一列中,具體取決于誰實際發起了好友請求。
如果這似乎是一個愚蠢的問題,我深表歉意,但我們都必須在某個時候學習。
請讓我知道是否有任何其他資訊會有所幫助。
uj5u.com熱心網友回復:
我相信如果您使用 OR 而不是子句AND中的條件,您的代碼會起作用WHERE,但我提出了一個更簡單的解決方案EXISTS:
SELECT u.id, u.display_name, u.join_date, u.profile_image_url
FROM user u
WHERE EXISTS (
SELECT *
FROM friend f
WHERE f.request_status = 1
AND (f.user_one_id, f.user_two_id) IN ((u.id, ?), (?, u.id))
);
替換?為您要搜索的用戶的 ID。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/438534.html
上一篇:嘗試連接到服務器時,MySQL'ETIMEDOUT'錯誤MacOSMonterey
下一篇:選擇不同的并計算行數
