MYSQL获取同时关注了某两个(或者N个)用户的用户
使用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
或者
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就可以了
MYSQL获取同时关注了某两个(或者N个)用户的用户的更多相关文章
- mysql 获取当前日期及格式化 (转)
MYSQL 获取当前日期及日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式 返回系统日期,输出 2009 ...
- mysql获取当前时间,及其相关操作
获取UNIX时间戳 : UNIX_TIMESTAMP(NOW()) 1.1 获得当前日期+时间(date + time)函数:now() 除了 now() 函数能获得当前的日期时间外,MySQL 中还 ...
- mysql 获取当前日期及格式化
MYSQL 获取当前日期及日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式 返回系统日期,输出 2009 ...
- mysql 获取全局唯一值
在涉及数据库存储数据的时候,经常会遇到唯一值问题,有的是主键带来的限制,有的则是业务上的需要. 下面介绍几种唯一值的获取或者生产方法: 先建一个测试用的表tbl_user,有三个字段:Id.Name. ...
- mysql获取group by的总记录行数方法
mysql获取group by内部可以获取到某字段的记录分组统计总数,而无法统计出分组的记录数. mysql的SQL_CALC_FOUND_ROWS 使用 获取查询的行数 在很多分页的程序中都这样写: ...
- JDBC 连接mysql获取中文时的乱码问题
前段时间学习JDBC,要连接mysql获取数据.按照老师的样例数据,要存一些名字之类的信息,用的都是英文名,我当时就不太想用英文,就把我室友的名字存了进去,嘿嘿,结果,出问题了. 连接数据库语句: s ...
- 转: MYSQL获取更新行的主键ID
在某些情况下我们需要向数据表中更新一条记录的状态,然后再把它取出来,但这时如果你在更新前并没有一个确认惟一记录的主键就没有办法知道哪条记录被更新了. 举例说明下: 有一个发放新手卡的程序,设计数据库时 ...
- mysql 获取当前日期及格式化(转)
MySQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段,format:日期格式 select now ...
- Mysql 获取成绩排序后的名次
其实就是输出mysql的排序后的行号 RT:获取单个用户的成绩在所有用户成绩中的排名 可以分两步: 1.查出所有用户和他们的成绩排名 ) as rowNo from t_user, () ) ...
随机推荐
- iOS开发系列-weak与unsafe_unretained修饰符
概述 在iOS内存管理中,为防止循环引用,定义类的内部对象属性使用weak.unsafe_unretained修饰符,不产生强引用. 开发中一般使用的weak修饰符,那么接下来说下weak跟unsaf ...
- 随笔记录 linux命令 2019.7.29
系统命令 一. type 查看命令是内部命令还是内部命令 help 帮助 man 在线帮助 cd 切换目录 pwd 查看所在路径 stat 查看文件详细信息 ls ...
- 用AJAX传值参数是中文时可能会乱码
1.ajax代码 function SelectSemesterBySchYear() { // alert('sssssss'); var temp1 = document.getElementBy ...
- Android 开发 框架系列 OkHttp文件上传功能实现(含断点续传)
前言 此篇博客只是上传功能的记录demo,如果你还不太了解okhttp可以参考我的另一篇博客https://www.cnblogs.com/guanxinjing/p/9708575.html 代码部 ...
- 用shell脚本执行php删除缓存文件
<?php #定义删除路径//服务器缓存目录的路径 $path = '/www/wwwroot/****/data/runtime'; #调用删除方法 deleteDir($path); fun ...
- SpringBoot使用拦截器/ Servlet/ Filter
一.SpringBoot中使用拦截器 使用SpringMVC的拦截器,需要定义好拦截器,然后通过配置文件文件,对其进行注册 而在SpringBoot项目中,之前在配置文件中配置的内容,现在体现在一个类 ...
- BZOJ 1089 (SCOI 2003) 严格n元树
Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严 ...
- 2018湖南NOIP集训报告7.15~7.26
Day1 主打内容:dfs/bfs及其优化剪枝,以及贪心算法的应用. 老师:\(Gromah\) 不得不说这个老师真的是个有趣的强大怪... 今天讲的挺水的,其实就是搜索吧,也没啥好听的,追会儿小说\ ...
- 如何HOOK桌面窗口消息
代码详见:http://download.csdn.net/detail/swanabin/6771465 需求:截获桌面窗口鼠标单击事件,解析所选中的桌面 Item,并将解析后的 item 信息发送 ...
- iOS开发UITableView随笔
1.设置cell的间隔 - (void)setFrame:(CGRect)frame{ frame.size.height -=; [super setFrame:frame]; } 2.刷新row或 ...