繁体   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