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. javascript - vuex 参数绑定问题求解2. mysql group by多个字段3. docker绑定了nginx端口 外部访问不到4. docker网络端口映射,没有方便点的操作方法么?5. css3 - 新版支付宝 账单页面滑动时月份栏被下一个月给顶上去是什么效果6. javascript - 关于js原生事件的绑定与解除绑定7. javascript - Vue 自定义控件v-model双向绑定8. 把h5放入webview里面,h5页面上下可以回弹,怎么可以去掉该效果9. python - celery beat 调度如何运行期间动态添加任务?10. javascript - yo创建angular报错

网公网安备