zoukankan      html  css  js  c++  java
  • 以订单和商品为例进行详细的组内数据获取的分析

    1、准备表

    CREATE TABLE `good_tab`  (
      `id` int(11) NOT NULL DEFAULT 0 AUTO_INCREMENT,
      `orderid` int(11) NULL DEFAULT NULL,
      `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `createrid` int(11) NULL DEFAULT NULL,
      `creattime` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`) USING BTREE,
      INDEX `orderid`(`orderid`) USING BTREE,
      INDEX `createrid`(`createrid`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 182 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    CREATE TABLE `order_tab`  (
      `id` int(11) NOT NULL DEFAULT 0,
      `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `createrid` int(11) NULL DEFAULT NULL,
      `creattime` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP,
      INDEX `createrid`(`createrid`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

    2、准备数据

    #订单数据
    INSERT INTO `order_tab` VALUES (1, '订单1', 1, '2017-11-23 11:05:07');
    INSERT INTO `order_tab` VALUES (2, '订单2', 1, '2017-12-03 11:05:21');
    INSERT INTO `order_tab` VALUES (3, '订单3', 1, '2018-01-06 11:05:30');
    INSERT INTO `order_tab` VALUES (4, '订单4', 2, '2018-02-12 11:05:30');
    INSERT INTO `order_tab` VALUES (5, '订单5', 2, '2018-03-15 11:05:51');
    INSERT INTO `order_tab` VALUES (6, '订单6', 2, '2018-04-26 11:06:00');
    INSERT INTO `order_tab` VALUES (7, '订单7', 3, '2018-05-25 11:06:10');
    INSERT INTO `order_tab` VALUES (8, '订单8', 3, '2018-06-21 11:06:20');
    INSERT INTO `order_tab` VALUES (9, '订单9', 3, '2018-07-23 11:06:30');
    INSERT INTO `order_tab` VALUES (10, '订单10', 4, '2018-08-15 11:06:41');
    INSERT INTO `order_tab` VALUES (11, '订单11', 4, '2018-09-16 11:06:51');
    INSERT INTO `order_tab` VALUES (12, '订单12', 4, '2018-10-18 11:07:00');
    INSERT INTO `order_tab` VALUES (13, '订单13', 5, '2018-11-20 11:07:10');
    INSERT INTO `order_tab` VALUES (14, '订单14', 5, '2018-12-22 11:07:24');
    INSERT INTO `order_tab` VALUES (15, '订单15', 5, '2019-01-23 11:07:33');
    #商品数据
    INSERT INTO `good_tab` VALUES (1, 1, '商品1', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (2, 1, '商品2', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (3, 1, '商品3', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (4, 2, '商品4', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (5, 3, '商品5', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (6, 3, '商品6', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (7, 3, '商品7', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (8, 4, '商品8', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (9, 5, '商品9', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (10, 6, '商品10', 2, '2018-04-26 11:06:00');
    INSERT INTO `good_tab` VALUES (11, 4, '商品11', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (12, 5, '商品12', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (13, 7, '商品13', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (14, 8, '商品14', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (15, 9, '商品15', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (16, 7, '商品16', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (17, 8, '商品17', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (18, 10, '商品18', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (19, 11, '商品19', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (20, 12, '商品20', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (21, 10, '商品21', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (22, 11, '商品22', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (23, 12, '商品23', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (24, 12, '商品24', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (25, 13, '商品25', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (26, 14, '商品26', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (27, 15, '商品27', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (28, 13, '商品28', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (29, 14, '商品29', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (30, 15, '商品30', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (31, 13, '商品31', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (32, 14, '商品32', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (33, 15, '商品33', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (34, 13, '商品34', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (35, 14, '商品35', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (36, 1, '商品36', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (37, 2, '商品37', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (38, 3, '商品38', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (39, 4, '商品39', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (40, 5, '商品40', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (41, 6, '商品41', 2, '2018-04-26 11:06:00');
    INSERT INTO `good_tab` VALUES (42, 7, '商品42', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (43, 8, '商品43', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (44, 9, '商品44', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (45, 10, '商品45', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (46, 11, '商品46', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (47, 12, '商品47', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (48, 13, '商品48', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (49, 14, '商品49', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (50, 15, '商品50', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (51, 1, '商品51', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (52, 2, '商品52', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (53, 3, '商品53', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (54, 4, '商品54', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (55, 5, '商品55', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (56, 6, '商品56', 2, '2018-04-26 11:06:00');
    INSERT INTO `good_tab` VALUES (57, 7, '商品57', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (58, 8, '商品58', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (59, 9, '商品59', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (60, 10, '商品60', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (61, 11, '商品61', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (62, 12, '商品62', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (63, 13, '商品63', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (64, 14, '商品64', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (65, 15, '商品65', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (66, 1, '商品66', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (67, 2, '商品67', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (68, 3, '商品68', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (69, 4, '商品69', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (70, 5, '商品70', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (71, 5, '商品71', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (72, 7, '商品72', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (73, 8, '商品73', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (74, 9, '商品74', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (75, 10, '商品75', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (76, 11, '商品76', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (77, 12, '商品77', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (78, 13, '商品78', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (79, 14, '商品79', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (80, 15, '商品80', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (81, 1, '商品81', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (82, 2, '商品82', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (83, 3, '商品83', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (84, 4, '商品84', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (85, 5, '商品85', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (86, 6, '商品86', 2, '2018-04-26 11:06:00');
    INSERT INTO `good_tab` VALUES (87, 7, '商品87', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (88, 8, '商品88', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (89, 9, '商品89', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (90, 10, '商品90', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (91, 11, '商品91', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (92, 12, '商品92', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (93, 13, '商品93', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (94, 14, '商品94', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (95, 15, '商品95', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (96, 1, '商品96', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (97, 2, '商品97', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (98, 3, '商品98', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (99, 4, '商品99', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (100, 5, '商品100', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (101, 6, '商品101', 2, '2018-04-26 11:06:00');
    INSERT INTO `good_tab` VALUES (102, 7, '商品102', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (103, 8, '商品103', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (104, 9, '商品104', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (105, 10, '商品105', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (106, 11, '商品106', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (107, 12, '商品107', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (108, 13, '商品108', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (109, 14, '商品109', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (110, 15, '商品110', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (111, 1, '商品111', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (112, 2, '商品112', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (113, 3, '商品113', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (114, 4, '商品114', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (115, 5, '商品115', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (116, 6, '商品116', 2, '2018-04-26 11:06:00');
    INSERT INTO `good_tab` VALUES (117, 7, '商品117', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (118, 8, '商品118', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (119, 9, '商品119', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (120, 10, '商品120', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (121, 11, '商品121', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (122, 12, '商品122', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (123, 13, '商品123', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (124, 14, '商品124', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (125, 15, '商品125', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (126, 1, '商品126', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (127, 2, '商品127', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (128, 3, '商品128', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (129, 4, '商品129', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (130, 5, '商品130', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (131, 6, '商品131', 2, '2018-04-26 11:06:00');
    INSERT INTO `good_tab` VALUES (132, 7, '商品132', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (133, 8, '商品133', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (134, 9, '商品134', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (135, 10, '商品135', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (136, 11, '商品136', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (137, 12, '商品137', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (138, 13, '商品138', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (139, 14, '商品139', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (140, 15, '商品140', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (141, 1, '商品141', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (142, 2, '商品142', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (143, 3, '商品143', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (144, 4, '商品144', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (145, 5, '商品145', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (146, 6, '商品146', 2, '2018-04-26 11:06:00');
    INSERT INTO `good_tab` VALUES (147, 7, '商品147', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (148, 8, '商品148', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (149, 9, '商品149', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (150, 10, '商品150', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (151, 11, '商品151', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (152, 12, '商品152', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (153, 13, '商品153', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (154, 14, '商品154', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (155, 15, '商品155', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (156, 1, '商品156', 1, '2017-11-23 11:05:07');
    INSERT INTO `good_tab` VALUES (157, 2, '商品157', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (158, 3, '商品158', 1, '2018-01-06 11:05:30');
    INSERT INTO `good_tab` VALUES (159, 4, '商品159', 2, '2018-02-12 11:05:30');
    INSERT INTO `good_tab` VALUES (160, 5, '商品160', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (161, 6, '商品161', 2, '2018-04-26 11:06:00');
    INSERT INTO `good_tab` VALUES (162, 7, '商品162', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (163, 8, '商品163', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (164, 9, '商品164', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (165, 10, '商品165', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (166, 11, '商品166', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (167, 12, '商品167', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (168, 13, '商品168', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (169, 14, '商品169', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (170, 15, '商品170', 5, '2019-01-23 11:07:33');
    INSERT INTO `good_tab` VALUES (171, 2, '商品171', 1, '2017-12-03 11:05:21');
    INSERT INTO `good_tab` VALUES (172, 5, '商品172', 2, '2018-03-15 11:05:51');
    INSERT INTO `good_tab` VALUES (173, 9, '商品173', 3, '2018-07-23 11:06:30');
    INSERT INTO `good_tab` VALUES (174, 12, '商品174', 4, '2018-10-18 11:07:00');
    INSERT INTO `good_tab` VALUES (175, 13, '商品175', 5, '2018-11-20 11:07:10');
    INSERT INTO `good_tab` VALUES (176, 8, '商品176', 3, '2018-06-21 11:06:20');
    INSERT INTO `good_tab` VALUES (177, 14, '商品177', 5, '2018-12-22 11:07:24');
    INSERT INTO `good_tab` VALUES (178, 11, '商品178', 4, '2018-09-16 11:06:51');
    INSERT INTO `good_tab` VALUES (179, 10, '商品179', 4, '2018-08-15 11:06:41');
    INSERT INTO `good_tab` VALUES (180, 7, '商品180', 3, '2018-05-25 11:06:10');
    INSERT INTO `good_tab` VALUES (181, 13, '商品181', 5, '2018-11-20 11:07:10');
    View Code

    需求:

    1、找到每个用户最新下的订单及订单中的商品信息

    #在单个表中实现
    #方式一
    select id,orderid,name,createrid from good_tab where orderid in (select max_orderid from(
    select max(orderid) max_orderid from good_tab group by createrid) as t1) order by orderid,id;
    #方式一在一张表中实现
    select t1.id,t1.orderid,t1.name,t1.createrid from good_tab as t1 inner join (
    select max(orderid) max_orderid from good_tab group by createrid) as t2 on t1.orderid=t2.max_orderid order by t1.orderid,t1.id;
    #方式二通过两张表来实现
    #第一步先找到最后下的订单
    select max(id) as max_orderid from order_tab group by createrid;
    #第二步进行in或者连表取数据
    #in实现
    select id,orderid,name,createrid from good_tab where orderid in (select max_orderid from 
    ( select max(id) as max_orderid from order_tab group by createrid ) as t1 )order by orderid,id; #连表实现 select t1.id,t1.orderid,t1.name,t1.createrid from good_tab as t1 inner join ( select max(id) as max_orderid from order_tab group by createrid) as t2 on t1.orderid = t2.max_orderid order by t1.orderid,t1.id; #方式三 #第一步首先获取到每个用户的最后下的订单 #在商品表中获取订单号 select orderid from ( select createrid,orderid,if(@a=createrid,@b:=@b+1,@b:=1) as temp,@a:=createrid as temp_createrid from
    (select distinct createrid,orderid from good_tab) as t1 order by createrid,orderid desc) as t2 where t2.temp < 2; #在订单表中获取订单号 select id from( select createrid,id,if(@a=createrid,@b:=@b+1,@b:=1) as temp,@a:=createrid as temp_createrid from order_tab order by createrid,id desc)
    as t1 where t1.temp < 2; #最后通过连表或者in的方式进行商品信息的获取 #以in的方式 select id,orderid,name,createrid from good_tab where orderid in ( select orderid from ( select createrid,orderid,if(@a=createrid,@b:=@b+1,@b:=1) as temp,@a:=createrid as temp_createrid from
    (select distinct createrid,orderid from good_tab) as t1 order by createrid,orderid desc) as t2 where t2.temp < 2) order by orderid,id; #以连表的方式 select t3.id,t3.orderid,t3.name,t3.createrid from good_tab as t3 inner join (select orderid from ( select createrid,orderid,if(@a=createrid,@b:=@b+1,@b:=1) as temp,@a:=createrid as temp_createrid from
    (select distinct createrid,orderid from good_tab) as t1 order by createrid,orderid desc) as t2 where t2.temp < 2) as t4
    on t3.orderid = t4.orderid order by t3.orderid,t3.id; #注意以上需求是最后一次订单中的商品信息,如果找最早的一次商品信息那么思路是一致的,在方法一、二中将max改为min即可,在方法三中排序为正序即可去掉desc,用默认的asc #方法四 #1 select id,orderid,name,createrid from good_tab where orderid in ( select concat(orderids) as temp_orderids from ( select SUBSTRING_INDEX(GROUP_CONCAT(distinct orderid order by orderid desc),',',1) as orderids from good_tab group by
    createrid order by createrid) as t1) order by orderid,id; #2 select id,orderid,name,createrid from good_tab where locate(concat(',',orderid,','), (select concat(',',GROUP_CONCAT(orderids),',') from ( select SUBSTRING_INDEX(GROUP_CONCAT(distinct orderid order by orderid desc),',',1) as orderids from good_tab group by
    createrid order by createrid) as t1 ) )> 0 order by orderid,id; #3 select id,orderid,name,createrid from good_tab where orderid in ( select SUBSTRING_INDEX(GROUP_CONCAT(distinct orderid order by orderid desc),',',1) as orderids from good_tab group by
    createrid order by createrid)ORDER BY orderid,id

    2、取每个用户最新的两个订单及订单中的商品信息

    #取每个用户最新的两个订单及订单中的商品信息
    #方法1
    SELECT
        id,
        orderid,
        NAME,
        createrid 
    FROM
        good_tab 
    WHERE
        locate(
        concat( ',', orderid, ',' ),
        (
    SELECT
        concat( ',', GROUP_CONCAT( orderids ), ',' ) 
    FROM
        (
    SELECT
        SUBSTRING_INDEX( GROUP_CONCAT( DISTINCT orderid ORDER BY orderid DESC ), ',', 2 ) AS orderids 
    FROM
        good_tab 
    GROUP BY
        createrid 
    ORDER BY
        createrid 
        ) AS t1 
        ) 
        ) > 0 
    ORDER BY
        orderid,
        id;
    #方法2
    SELECT
        id,
        orderid,
        NAME,
        createrid 
    FROM
        good_tab 
    WHERE
        orderid IN (
    SELECT
        orderid 
    FROM
        (
    SELECT
        createrid,
        orderid,
    IF
        ( @a = createrid, @b := @b + 1, @b := 1 ) AS temp,
        @a := createrid AS temp_createrid 
    FROM
        ( SELECT DISTINCT createrid, orderid FROM good_tab ) AS t1 
    ORDER BY
        createrid,
        orderid DESC 
        ) AS t2 
    WHERE
        t2.temp < 3 
        ) 
    ORDER BY
        orderid,
        id;

     参考:https://blog.csdn.net/qq_16504067/article/details/78589232

  • 相关阅读:
    51 nod 1279 扔盘子
    洛谷 P2911 [USACO08OCT]牛骨头Bovine Bones
    1759 加减表达式
    1750 加法表达式
    poj 1006 Biorhythms
    vijos 1198 最佳课题选择
    poj 1390 Blocks
    codevs 3324 新斯诺克
    codevs 2075 yh女朋友的危机
    对拍器
  • 原文地址:https://www.cnblogs.com/aadmina/p/10316198.html
Copyright © 2011-2022 走看看