MySQL多表查詢,MYSQL獲取同時關注了某兩個(或者N個)用戶的用戶

 2023-10-25 阅读 23 评论 0

摘要:使用redis的set類型數據的話會比較容易,但是業務場景就是在mysql里面,因此也需要思考解決方法 表結構: CREATE TABLE `table_name` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `userid` int(12) NOT NULL COMMENT '

使用redis的set類型數據的話會比較容易,但是業務場景就是在mysql里面,因此也需要思考解決方法

表結構:

CREATE TABLE `table_name` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`userid` int(12) NOT NULL COMMENT '用戶ID',
`fans_id` int(12) unsigned NOT NULL COMMENT '粉絲id',
PRIMARY KEY (`id`),
KEY `fans_id` (`fans_id`) USING BTREE,
KEY `userid` (`userid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=312141 DEFAULT CHARSET=utf8 ;

1、比較直接的辦法是直接聯表:

SELECT * FROM 
(SELECT * FROM `table_name` WHERE userid=1060) t1 
INNER JOIN(SELECT * FROM `table_name` WHERE userid=106088) t2
ON t1.fans_id=t2.fans_id

MySQL多表查詢。或者

SELECT * FROM `table_name` t1 INNER JOIN `table_name` t2 ON t1.fans_id=t2.fans_id WHERE t1.userid=1060 AND t2.userid=106088

2、然而,如果這里的N>2,那就意味著要聯N-1次,這樣顯然不太合理。所以還想了一種辦法:

SELECT * FROM 
(SELECT fans_id,COUNT(id) as user_num FROM `table_name` WHERE userid IN (1060,106088) GROUP BY fans_id) t1 
WHERE user_num=2

如果有N個,那么user_num=N,IN里面也是N個用戶ID

這樣做還有個好處:如果要獲取只關注了其中1個或者2個用戶的用戶,那么只要修改user_num就可以了

session獲取當前用戶。轉載于:https://www.cnblogs.com/liaokaichang/p/9210020.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/164169.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息