[英]Mysql query not return correct result
我有兩張桌子
一個是user_matchs
id | user_id | matched_user_id | status
36 | 17 | 24 | passed
37 | 17 | 25 | friend
另一個是用戶
id | name | address | age
17 | mamun | test | 23
25 | shihab | test2 | 30
24 | shihab2 | test22 | 30
現在,我想根據給定userId
某些條件來檢索所有用戶的列表
假設我是用戶17。現在我想查看不是我的朋友並且通過我的所有用戶。if user_matchs表
user_id=17 and matched_user_id=24 and status=passed
則表示我通過了用戶24,但24未通過我,如果24也通過了我,那么行將是
user_id=17 and matched_user_id=24 and status=friend
另一個邏輯
user_id=24 and matched_user_id=17 and status=passed
然后表示用戶24通過了我,但是我沒有通過用戶17如果17也通過了我,那么該行將是
user_id=24 and matched_user_id=17 and and status=friend
當我給userId 17提供搜索查詢時,它不返回任何用戶,因為用戶25是用戶17的朋友,而用戶17已通過用戶24。
但是,當我在搜索查詢中提供userId 24時,它將返回用戶17和25。因為用戶25不是朋友或未通過用戶24,並且用戶17不是朋友或用戶24未通過用戶17。
我正在嘗試使用此查詢,但它無法正常工作:這里給定ID 24
SELECT *
FROM `users`
WHERE users.id != 24 AND
users.id NOT IN (SELECT matched_user_id
FROM `user_matchs`
WHERE user_id = '24'
)
and
users.id NOT IN (SELECT user_id
FROM `user_matchs`
WHERE matched_user_id = '24'
)
第二個子查詢需要檢查status
字段,因此它僅排除朋友,而不排除通過您的人。
SELECT *
FROM `users`
WHERE users.id != 24 AND
users.id NOT IN (SELECT matched_user_id
FROM `user_matchs`
WHERE user_id = '24'
)
and
users.id NOT IN (SELECT user_id
FROM `user_matchs`
WHERE matched_user_id = '24'
AND status = 'friend'
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.