mysql获取表中最大的日期(最近的日期)详解数据库
2023-06-13 09:20:14 时间
CREATE TABLE `order` ( `order_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 订单id, `order_money` decimal(10,2) DEFAULT NULL COMMENT 订单金额, PRIMARY KEY (`order_id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COMMENT=订单表;
INSERT INTO `order` (`order_id`, `order_money`) VALUES (1, 100.00); INSERT INTO `order` (`order_id`, `order_money`) VALUES (2, 200.00); INSERT INTO `order` (`order_id`, `order_money`) VALUES (3, 500.00); INSERT INTO `order` (`order_id`, `order_money`) VALUES (4, 1000.00);
订单支付表:
CREATE TABLE `order_price` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT id, `order_id` bigint(20) DEFAULT NULL COMMENT 订单id, `pay_money` decimal(10,2) DEFAULT NULL COMMENT 付款金额, `pay_time` datetime DEFAULT NULL COMMENT 支付日期, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
INSERT INTO `order_price` (`id`, `order_id`, `pay_money`, `pay_time`) VALUES (1, 1, 100.00, 2018-8-31 14:23:43); INSERT INTO `order_price` (`id`, `order_id`, `pay_money`, `pay_time`) VALUES (2, 2, 30.00, 2018-8-28 14:23:53); INSERT INTO `order_price` (`id`, `order_id`, `pay_money`, `pay_time`) VALUES (3, 2, 70.00, 2018-8-30 14:24:01); INSERT INTO `order_price` (`id`, `order_id`, `pay_money`, `pay_time`) VALUES (4, 3, 250.00, 2018-8-14 14:24:11); INSERT INTO `order_price` (`id`, `order_id`, `pay_money`, `pay_time`) VALUES (5, 3, 250.00, 2018-8-18 14:24:19); INSERT INTO `order_price` (`id`, `order_id`, `pay_money`, `pay_time`) VALUES (6, 4, 250.00, 2018-8-3 14:24:26); INSERT INTO `order_price` (`id`, `order_id`, `pay_money`, `pay_time`) VALUES (7, 4, 300.00, 2018-8-10 14:24:32); INSERT INTO `order_price` (`id`, `order_id`, `pay_money`, `pay_time`) VALUES (8, 4, 300.00, 2018-8-19 14:24:40);
下面是查询语句:
1.查询未付清的订单
SELECT o.* FROM `order` o LEFT JOIN (SELECT order_id oi,SUM(pay_money) sp FROM order_price GROUP BY order_id) a ON o.order_id = a.oi WHERE o.order_money a.sp
2.获取付清订单的最后支付日期
SELECT o.*,a.mpt FROM `order` o LEFT JOIN ( SELECT id,order_id,SUM(pay_money) spm,MAX(pay_time) mpt FROM order_price GROUP BY order_id ) a ON o.order_id = a.order_id WHERE o.order_money = a.spm
SELECT o.*,b.apt FROM `order` o LEFT JOIN (SELECT SUM(a.pay_money) spm,a.order_id aoi,a.pay_time apt FROM (SELECT * FROM order_price ORDER BY pay_time DESC LIMIT 10000000000000) a GROUP BY a.order_id) b ON o.order_id = b.aoi WHERE o.order_money = b.spm
上面这两个查询都可以实现第二个问题。这两个sql都有点复杂,一定会有比这更好的方法。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/5764.html
相关文章
- 一次完整的 Django 项目的迁移,有关 MySQL 数据库的导出与导入
- MySQL数据库修复指南(mysql如何修复)
- 设置代理服务器连接MySQL(代理服务器连接mysql)
- MySQL安装新手指南:快速安装手册(mysql安装版安装教程)
- 深入解析MySQL读写分离的内部原理(mysql读写分离原理)
- MySQL数据库基础入门:学习MySQL必读的书籍(mysql数据库基础书)
- 数据库尚学堂MySQL数据库实现优秀数据库应用(尚学堂mysql)
- MySQL:革命性的数据库管理系统(mysql数据源)
- 从MSSQL到MySQL:谁来承担数据迁移的风险?(mssql转到mysql)
- 表MySQL查看数据库Table表一步搞定(mysql查看table)
- 文件MySQL技巧:简单快速恢复数据库bak文件(mysql打开bak)
- MySQL修饰符学会这些常用的修饰符,助您更好地管理数据库(mysql中修饰符)
- 如何在MySQL中使用Name字段进行数据查询(mysql中name字段)
- Windows CMD命令中进入MySQL数据库的指导(cmd 里打开mysql)
- MySQL中如何判断查询结果值(mysql中判断结果值)
- MySQL分类查询详解(mysql中分类查询)
- MySQL函数的作用和使用方法(mysql中函数作用)
- MySQL中文输入操作技巧(mysql下输入中文)
- 回顾MySQL上周日的时期,了解数据库的应用和发展(mysql上周日的时期)
- 探究MySQL免费模式背后的盈利模式(mysql不收费怎么盈利)
- MySQL数据库不支持全连接操作,详解查询中的连接方式(mysql 不支持全连接)