首页 > 数据库 >mysql分组取每组前几条记录(排序)

mysql分组取每组前几条记录(排序)

时间:2022-12-08 11:13:01浏览次数:54  
标签:INSERT mygoods INTO 每组 99 分组 mysql VALUES id

首先来造一部分数据,表mygoods为商品表,cat_id为分类id,goods_id为商品id,status为商品当前的状态位(1:有效,0:无效)

CREATE TABLE `mygoods` (  
  `goods_id` int(11) unsigned NOT NULL AUTO_INCREMENT,  
  `cat_id` int(11) NOT NULL DEFAULT '0',  
  `price` tinyint(3) NOT NULL DEFAULT '0',  
  `status` tinyint(3) DEFAULT '1',  
  PRIMARY KEY (`goods_id`),  
  KEY `icatid` (`cat_id`)  
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;  
  
INSERT INTO `mygoods` VALUES (1, 101, 90, 0);  
INSERT INTO `mygoods` VALUES (2, 101, 99, 1);  
INSERT INTO `mygoods` VALUES (3, 102, 98, 0);  
INSERT INTO `mygoods` VALUES (4, 103, 96, 0);  
INSERT INTO `mygoods` VALUES (5, 102, 95, 0);  
INSERT INTO `mygoods` VALUES (6, 102, 94, 1);  
INSERT INTO `mygoods` VALUES (7, 102, 93, 1);  
INSERT INTO `mygoods` VALUES (8, 103, 99, 1);  
INSERT INTO `mygoods` VALUES (9, 103, 98, 1);  
INSERT INTO `mygoods` VALUES (10, 103, 97, 1);  
INSERT INTO `mygoods` VALUES (11, 104, 96, 1);  
INSERT INTO `mygoods` VALUES (12, 104, 95, 1);  
INSERT INTO `mygoods` VALUES (13, 104, 94, 1);  
INSERT INTO `mygoods` VALUES (15, 101, 92, 1);  
INSERT INTO `mygoods` VALUES (16, 101, 93, 1);  
INSERT INTO `mygoods` VALUES (17, 101, 94, 0);  
INSERT INTO `mygoods` VALUES (18, 102, 99, 1);  
INSERT INTO `mygoods` VALUES (19, 105, 85, 1);  
INSERT INTO `mygoods` VALUES (20, 105, 89, 0);  
INSERT INTO `mygoods` VALUES (21, 105, 99, 1);

需求:每个分类下,找出两个价格最高的有效的商品

mysql> select a.*   
    -> from mygoods a   
    -> where (select count(*) 
    -> from mygoods 
    -> where cat_id = a.cat_id and price > a.price  ) <2 
    -> order by a.cat_id,a.price desc;
+----------+--------+-------+--------+
| goods_id | cat_id | price | status |
+----------+--------+-------+--------+
|        2 |    101 |    99 |      1 |
|       17 |    101 |    94 |      0 |
|       18 |    102 |    99 |      1 |
|        3 |    102 |    98 |      0 |
|        8 |    103 |    99 |      1 |
|        9 |    103 |    98 |      1 |
|       11 |    104 |    96 |      1 |
|       12 |    104 |    95 |      1 |
|       21 |    105 |    99 |      1 |
|       20 |    105 |    89 |      0 |
+----------+--------+-------+--------+
10 rows in set (0.00 sec)

标签:INSERT,mygoods,INTO,每组,99,分组,mysql,VALUES,id
From: https://www.cnblogs.com/zh718594493/p/16965521.html

相关文章

  • [转]MySQL数据类型详解
    原文地址:https://www.cnblogs.com/lteal/archive/2013/03/04/2943061.htmlMySQL数据类型,可以被分为3类:数值类型、日期和时间类型以及字符串(字符)类型 方括号(“[”和......
  • linux设置mysql开机自启
    版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/yylhm1125/article/details/125738283  1.......
  • MySQL
    MySQLWHERE子句我们知道从MySQL表中使用SQLSELECT语句来读取数据。如需有条件地从表中选取数据,可将WHERE子句添加到SELECT语句中。语法以下是SQLSELECT语句......
  • MYsql
    Mysql下载安装卸载配置教程Mysql下载下载之后打开安装好安装好呢可以去管理查看有没有MySQL的服务那么如何运行mysql的服务呢cmd管理员命令打开输入netst......
  • mysql中文全文检索从入门到放弃
    like全匹配模糊查询不能使用索引一直是sql查询的一个棘手的问题,那么mysql的全文检索真的能解决这个问题吗?背景最近,在工作中遇到一个查询优化的问题,简化的sql如下:SELECT*F......
  • 一图搞定MySQL体系架构
    要了解mysql的运行机制,那么首先要对mysql的体系结构有一定的了解。最近由于一些事,被打击的不轻,感觉自己可能再怎么努力,职业生涯也就这样了。所以对专研技术、写博客突然丧失......
  • 解析mysql存储结构---innodb_ruby工具
    innodb_ruby用途:主要可查看innodb数据库数据表的各种存储,解析innodb的文件,用于学习数据库底层的一些存储。在debian系统安装innodb_ruby1、sudoaptinstallruby-dev2、su......
  • mysql explain
    explain这个命令来查看SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描等执行explain后,显示的信息有如下几列id:表示查询中执行select子句或操......
  • mysql数据库导入导出
    1源数据库导出数据 这一步将导出结构和数据到一个.sql文件中2导入到空数据库中将上一步导出的.sql文件传到要服务器某路径下,比如/data/sqldata/devself.sql然后在......
  • 绿色版MySQL8.0.26安装流程
    下载 5.7 8.0 官网 https://dev.mysql.com/downloads/mysql/ 国内镜像网站 https://developer.aliyun.com/mirror/ ​ windows安装数据库 安装版: .......