我有两张table和朋友。我想得到我的朋友的所有职位,但不包括从后表块的朋友。我使用了所有的左连接,右连接,内连接,但查询返回所有数据,包括块友元数据。我只想朋友的数据是不像Facebook系统块。我的表结构是
- 1.岗位表**
|post_id|user_id|content|image|is_delete|created|
-------------------------------------------------
| 1 | 1 | hello | 0 | 0 | 2020-12-23 11:12:11 |
-------------------------------------------------
| 2 | 2 | hi1 | 0 | 0 | 2020-12-24 13:33:42 |
-------------------------------------------------
| 3 | 3 | hi2 | 0 | 0 | 2020-12-24 13:33:42 |
-------------------------------------------------
| 3 | 4 | hi3 | 0 | 0 | 2020-12-24 13:33:42 |
-------------------------------------------------
- 2.好友表**
|id|user_id|request_id|status|block|created|
--------------------------------------------
| 1 | 1 | 2 | 2 | 1 | 2020-12-23 11:23:23 |
--------------------------------------------
| 1 | 3 | 1 | 2 | 0 | 2020-12-23 11:33:33 |
--------------------------------------------
| 1 | 4 | 1 | 2 | 0 | 2020-12-23 11:33:33 |
--------------------------------------------
我的sql查询是
select
*
from
post p
left join
friends f on (p.user_id = f.user_id or p.user_id = f.request_id)
where
((f.user_id = '1' OR f.request_id = '1')
and f.status = '2'
and f.block !=1
and p.is_delete !=1)
我已经改变了我的查询阅读stackoverflow问题和评论,但结果是相同的下面
查询-
select
*
from
post p
left join
friends f on (p.user_id = f.user_id or p.user_id = f.request_id)
and f.status = '2' and f.block !=1
where
((f.user_id = '1' OR f.request_id = '1')
and p.is_delete !=1)
结果是
|post_id|user_id|content|image|is_delete|created|
-------------------------------------------------
| 1 | 1 | hello | 0 | 0 | 2020-12-23 11:12:11 |
------------------------------------------------
| 2 | 2 | hi1 | 0 | 0 | 2020-12-24 13:33:42 |
------------------------------------------------
| 3 | 3 | hi2 | 0 | 0 | 2020-12-24 13:33:42 |
------------------------------------------------
| 3 | 4 | hi3 | 0 | 0 | 2020-12-24 13:33:42 |
-----------------------------------------------
但我想要这个结果
|post_id|user_id|content|image|is_delete|created|
-------------------------------------------------
| 1 | 1 | hello | 0 | 0 | 2020-12-23 11:12:11 |
------------------------------------------------
| 3 | 3 | hi2 | 0 | 0 | 2020-12-24 13:33:42 |
------------------------------------------------
| 3 | 4 | hi3 | 0 | 0 | 2020-12-24 13:33:42 |
------------------------------------------------
请告诉我我的查询有什么问题。谢谢你的帮助
2条答案
按热度按时间gtlvzcf81#
您的查询看起来很好。为什么要做
LEFT JOIN
?这是不必要的。尝试以下查询:
pxiryf3j2#
尝试:
select p. * from post p LEFT JOIN friends f on p.user_id = f.user_id where f.block!=1
这将为您提供未被阻止的朋友的数据。如果需要,可以在where子句中添加不同的检查。但这是您的问题需求的最简单的解决方案,即。“* 我想得到我的朋友的所有职位,但不包括从帖子表块的朋友。*”