版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwl2014100338/article/details/84137200
建表语句
/*
Navicat MySQL Data Transfer
Source Server : test
Source Server Type : MySQL
Source Server Version : 50620
Source Host : localhost:3306
Source Schema : shop
Target Server Type : MySQL
Target Server Version : 50620
File Encoding : 65001
Date: 16/11/2018 12:15:29
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for orders
-- ----------------------------
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`money` decimal(10, 0) NOT NULL,
`create_time` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of orders
-- ----------------------------
INSERT INTO `orders` VALUES (1, 1, 50, '1420520000');
INSERT INTO `orders` VALUES (2, 1, 100, '1420520010');
INSERT INTO `orders` VALUES (3, 2, 100, '1420520020');
INSERT INTO `orders` VALUES (4, 2, 200, '1420520030');
SET FOREIGN_KEY_CHECKS = 1;
需求:找出每个用户最近一次的消费记录
select t.user_id, t.money
from(
select ord.user_id, ord.money, ord.create_time from orders ord where ord.user_id > 0 and create_time > 0
order by user_id asc , create_time desc
) t group by user_id ;
查询结果如下
总结
(1)利用 group_concat + substr等函数处理
(2)类似的业务场景都可以这么做