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. css3 - css如何实现素描描边效果2. css - 移动端 line-height安卓错位,苹果机正常用,缩放解决了,可是又出来了占位的问题3. 代理 - 一个nginx需求,访问web服务时,若用户为测试用户则转发到web服务的测试版本4. 正则表达式 - python pandas的sep参数问题5. javascript - vscode的code runner插件6. css - 关于ul的布局7. javascript - 在静态页面上用load 引入的页面文件问题?8. javascript - webpack打包后的bundlejs文件代码不知道什么意思.9. html - 哪些情况下float会失效?10. css - 如何使用 vue transition 实现 ios 按钮一样的平滑切换效果
