mysql - 如何以uid为基准查询所有一分钟之内有两条数据以上的数据
问题描述
如下表
uid order moneytime1 100 10 2016-08-08 12:00:001 101 6 2016-08-08 12:00:582 102 8 2016-08-08 12:02:002 103 10 2016-08-08 12:02:332 104 15 2016-08-08 12:03:003 105 10 2016-08-08 12:03:011 106 10 2016-08-08 12:05:00
根据题意需要找到的数据:
uid order moneytime1 100 10 2016-08-08 12:00:001 101 6 2016-08-08 12:00:582 102 8 2016-08-08 12:02:002 103 10 2016-08-08 12:02:332 104 15 2016-08-08 12:03:00
问题解答
回答1:写法一:
SELECT * FROM table AS aWHERE EXISTS ( SELECT 1 FROM table AS b WHERE a.uid = b.uid AND b.time >= date_sub(now(), INTERVAL 1 minute) GROUP BY b.uid HAVING count(1) > 1);
写法二:
SELECT * FROM tableWHERE uid IN ( SELECT uid FROM table WHERE time >= date_sub(now(), INTERVAL 1 minute) GROUP BY uid HAVING count(1) > 1);
建议将date_sub(now(), INTERVAL 1 minute)用程序运算出来再代替进去。
相关文章:
1. python - 字符串里的u’u00a1’怎么打印成中文2. css - width设置为100%之后列表无法居中3. sublime-text - sublime text 3中编译python(sublimeREPL),如何仅运行单行/选定部分4. angular.js使用$resource服务把数据存入mongodb的问题。5. docker-compose 为何找不到配置文件?6. mysql连表排序7. 代码如下,java用BigDecimal四舍五入怎么还有问题呀?哪种方式是完全没有问题的?8. 登录界面URL在服务器上无法找到9. javascript - 如何让双核浏览器默认选择急速模式渲染页面10. java - spring MVC框架Controller层中应该使用StringBuffer还是StringBuilder?

网公网安备