簡體   English   中英

MySQL查詢未返回正確結果

[英]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'
                              ) 

sql小提琴

第二個子查詢需要檢查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'
                    ) 

sqlfiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM