[英]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.