今天项目BOSS提了个sql语句需求,我听得稀里糊涂,没办法,一步步讨论、实践,最终搞定。

先上建表语句:

 /*
Navicat MySQL Data Transfer Source Server : localhost_3306
Source Server Version : 50623
Source Host : localhost:3306
Source Database : demo Target Server Type : MYSQL
Target Server Version : 50623
File Encoding : 65001 Date: 2015-08-16 00:02:22
*/ SET FOREIGN_KEY_CHECKS=0; -- ----------------------------
-- Table structure for t_info
-- ----------------------------
DROP TABLE IF EXISTS `t_info`;
CREATE TABLE `t_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(24) DEFAULT NULL,
`number` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of t_info
-- ----------------------------
INSERT INTO `t_info` VALUES ('', 'a', '');
INSERT INTO `t_info` VALUES ('', 'b', '');
INSERT INTO `t_info` VALUES ('', 'a', '');
INSERT INTO `t_info` VALUES ('', 'a', '');
INSERT INTO `t_info` VALUES ('', 'a', '');
INSERT INTO `t_info` VALUES ('', 'b', '');
INSERT INTO `t_info` VALUES ('', 'b', '');
INSERT INTO `t_info` VALUES ('', 'b', '');
INSERT INTO `t_info` VALUES ('', 'a', '');
INSERT INTO `t_info` VALUES ('', 'b', '');

先把数据显示出来:

 select * from t_info

实际需求:查询一次,能同时显示出a、b的一条数据,可以修改显示的数据条数。这个类似用户网站行为产生的数据。

错误思路,当时想复杂了,用语句

select * from t_info ORDER BY NAME

分组后显示,

开始思考,怎么去做函数或者数组保持数据。

其实根本就不用这么麻烦,归根到底还是自己基础薄弱,基本知识不扎实。

select * from t_info a where 2 > (select count(*) from t_info where name = a.name and number > a.number )  ORDER BY NAME

解决思路:每组按number从大到小排序取前面2行数据,并按照name排序。2是可以改变的。实现效果:

OK.这次经验:多讨论。想问题的时候一步步来,从最简单的开始,不要想着一劳永逸。

mysql 自连接查询数据的更多相关文章

  1. 如何实现MySQL随机查询数据与MySQL随机更新数据?

    以下的文章主要介绍的是MySQL随机选取数据,对实现MySQ随机查询数据与MySQ随机更新数据的实际操作步骤的描述,以及对其实际操作中所要用到的语句的描述,以下就是对其具体操作步骤的描述. MySQL ...

  2. Python3操作MySQL,查询数据并保存到文件中

    我们在测试过程中,可能需要到数据库中拉去一些数据,为从测试准备.比如最近在做接口性能测试的时候,就需要很多数据来支撑,所以就需要的数据库去查询数据,下面就是python3 查询 mysql 并且保存到 ...

  3. 分享:mysql 随机查询数据

    在mysql中查询5条不重复的数据,使用以下: 1 SELECT * FROM `table` ORDER BY RAND() LIMIT 5  就可以了.但是真正测试一下才发现这样效率非常低.一个1 ...

  4. MySQL 数据库查询数据,过滤重复数据保留一条数据---(MySQL中的row_number变相实现方法)

    转自: http://www.maomao365.com/?p=10564 摘要: 下文讲述MySQL数据库查询重复数据时,只保留一条数据的方法 实现思路: 在MySQL数据库中没有row_numbe ...

  5. MySQL数据库——查询数据

    增加数据: insert into "表名" values( '字段'',字段'); 或insert into '表名'( '字段'',字段')  values( '字段'',字段 ...

  6. nodejs操作 mongoose(mongodb)和Sequelize(mysql)查询数据后添加新属性未生效

    最近在着手koa时候,发现mongoose(mongodb)查询数据库后添加新属性,前端拿不到新属性问题, 然后测试了一下Sequelize(mysql),发现也有同样的问题存在.此时着手干! 1.1 ...

  7. Mysql数据库查询数据文件大小

    参考网站:https://zhidao.baidu.com/question/201227796936321525.html 用SQL命令查看Mysql数据库大小 要想知道每个数据库的大小的话,步骤如 ...

  8. 解决mysql控制台查询数据乱码的问题,有图有真相

    在mysql  控制台当 当为gbk的时候查询的数据是汉字,假设不是则为乱码.  set  names  gbk;  那么查询出来的数据则为汉字

  9. 关于Mysql数据库查询数据大小写的问题汇总

    前天在问答区看到一个童鞋对于mysql中大小写问题不熟悉,在回复他后再次汇总梳理如下: mysql中大小写问题主要有以下两种: A.表名区分大小写 ower_case_table_names 是表名区 ...

随机推荐

  1. How to check the 'OLE DB Destination' INPUT and OUTPUT

    Step 1: Step 2: Step 3:

  2. linux查找并杀死进程shell

    ps -ef|grep java\ -cp\ .*jar|grep -v grep|cut -c 9-15|xargs kill -9

  3. STL学习笔记(序列式容器)

    Vector Vector是一个动态数组. 1.Vector的操作函数 构造.拷贝和析构 vector<Elem> c //产生一个空vector ,其中没有任何元素 vector< ...

  4. Eclipse中设置格式化jsp自动换行

    JSP代码换行:Window->Preferences->Web->JSP Files->Editor->Line width

  5. jmeter压测-负载配置

    jmeter 压测 一般压测的时间是10-15分钟 TPS:服务端每秒钟处理的请求数  越大越好 响应时间 :越短越好 并发用户数  也就是多少并发 指标给你:tps要达到多少 响应时间要达到多少 并 ...

  6. 《windows核心编程》 在应用程序中使用虚拟内存

    Microsoft Windows 提供了以下三种机制来对内存进行操控: 虚拟内存 最适合用来管理大型对象数组或大型结构数组 内存映射文件 最适合用来管理大型数据流(通常是文件),以及在同一台机器上运 ...

  7. 使用xib定义的UITableViewCell的复用identifier

    使用xib自定义cell的时候,需要在xib中指定复用identifier(通常与类名一致即可),在编码的时候,也应该使用该identifier而不应该自定义其他identifier,否则,可能导致程 ...

  8. Sql视图创建语句及修改视图

    create view [dbo].[AllUsers] as select u.UserId, u.Firstname, u.Lastname, u.ts, am.Email, au.UserNam ...

  9. css 温故而知新 1px的问题

    解决方法1: //border @mixin border($pos, $color) { content: ""; position: absolute; transform-o ...

  10. iOS开发 - 第05篇 - 项目 - 12 - 图文混排

    1.首页微博文字处理 对于之前微博项目中首页:微博文字中的用户名.话题.链接等文字须要高亮显示.表情字符串须要显示相应表情. 思路: 1>之前微博中的文字使用NSString,要达到不同文字的高 ...