今天项目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. node - 写返回mime类型

    何为mime类型?  mime.json { ".323":"text/h323" , ".3gp":"video/3gpp&qu ...

  2. Android学习(十三) BroadcastReceiver组件(广播)

    一.Broadcast(广播) 是一种广泛应用在应用程序之间传输信息的机制. 二.Broadcast(广播接收器) 是对发送出来的广播进行过滤接收并响应的一类组件,它就是用来接收来自系统和应用中的广播 ...

  3. Python学习笔记(二)网络编程的简单示例

    Python中的网络编程比C语言中要简洁很多,毕竟封装了大量的细节. 所以这里不再介绍网络编程的基本知识.而且我认为,从Python学习网络编程不是一个明智的选择.   简单的TCP连接 服务器代码如 ...

  4. 【Django】01_创建一个简单的项目

    1.创建Django项目 点击:file-->new project,出现下面的对话框.选择Django栏目,输入项目名称, 选择python解释器版本,点击create创建. Django将自 ...

  5. mongo: 索引

    索引创建 在学习索引之前,我们先看一下,如果没有添加索引时,我们用explain()函数,查看查询计划是什么样的. 发现使用的是BasicCursor,那么就代表我们没有索引,当我们查某一个数据的时候 ...

  6. Java学习从入门到精通(1) [转载]

    Java Learning Path (一).工具篇 一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envi ...

  7. CSS 温故而知新 断句失败

    设置了一定的宽度和高度.但无论是下面哪句都无效. word-break: break-word; word-wrap: break-word; 原因竟然是因为 /* white-space: nowr ...

  8. 【问题记录】web项目访问时出现404

    请一定检查一下项目的Context root是否是你访问时使用的. Context root设置为/时,可以直接用ip+端口访问. Context root设置为项目名的,访问时请带上项目名. 设置方 ...

  9. java多线程编码注意事项

    Sole purpose of using concurrency is to produce scalable and faster program. But always remember, sp ...

  10. linux下性能测试工具netperf使用

    一.功能简介 netperf是一款针对网络性能的测试工具,主要基于TCP或UDP的传输.根据应用的不同,可以进行批量数据传输(bulk data transfer)模式和请求/应答(request/r ...