mysql 自连接查询数据
今天项目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 自连接查询数据的更多相关文章
- 如何实现MySQL随机查询数据与MySQL随机更新数据?
以下的文章主要介绍的是MySQL随机选取数据,对实现MySQ随机查询数据与MySQ随机更新数据的实际操作步骤的描述,以及对其实际操作中所要用到的语句的描述,以下就是对其具体操作步骤的描述. MySQL ...
- Python3操作MySQL,查询数据并保存到文件中
我们在测试过程中,可能需要到数据库中拉去一些数据,为从测试准备.比如最近在做接口性能测试的时候,就需要很多数据来支撑,所以就需要的数据库去查询数据,下面就是python3 查询 mysql 并且保存到 ...
- 分享:mysql 随机查询数据
在mysql中查询5条不重复的数据,使用以下: 1 SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了.但是真正测试一下才发现这样效率非常低.一个1 ...
- MySQL 数据库查询数据,过滤重复数据保留一条数据---(MySQL中的row_number变相实现方法)
转自: http://www.maomao365.com/?p=10564 摘要: 下文讲述MySQL数据库查询重复数据时,只保留一条数据的方法 实现思路: 在MySQL数据库中没有row_numbe ...
- MySQL数据库——查询数据
增加数据: insert into "表名" values( '字段'',字段'); 或insert into '表名'( '字段'',字段') values( '字段'',字段 ...
- nodejs操作 mongoose(mongodb)和Sequelize(mysql)查询数据后添加新属性未生效
最近在着手koa时候,发现mongoose(mongodb)查询数据库后添加新属性,前端拿不到新属性问题, 然后测试了一下Sequelize(mysql),发现也有同样的问题存在.此时着手干! 1.1 ...
- Mysql数据库查询数据文件大小
参考网站:https://zhidao.baidu.com/question/201227796936321525.html 用SQL命令查看Mysql数据库大小 要想知道每个数据库的大小的话,步骤如 ...
- 解决mysql控制台查询数据乱码的问题,有图有真相
在mysql 控制台当 当为gbk的时候查询的数据是汉字,假设不是则为乱码. set names gbk; 那么查询出来的数据则为汉字
- 关于Mysql数据库查询数据大小写的问题汇总
前天在问答区看到一个童鞋对于mysql中大小写问题不熟悉,在回复他后再次汇总梳理如下: mysql中大小写问题主要有以下两种: A.表名区分大小写 ower_case_table_names 是表名区 ...
随机推荐
- javascript 设计模式 -- 发布/订阅模式
直接上代码: index.html : <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- 2015级C++第7周项目 友元、共享数据保护、多文件结构
[项目1-成员函数.友元函数和一般函数有差别]參考解答 (1)阅读以下的程序,体会凝视中的说明(要执行程序,请找到课程主页并复制代码) //例:使用成员函数.友元函数和一般函数的差别 #include ...
- MySQL查询缓存设置提高MySQL查询性能
首先看看MSYQL逻辑框架:图片来自高性能mysql 如果使用了QueryCache,当查询接收到一个和之前同样的查询,服务器将会从查询缓存中检索结果,而不是再次分析和执行相同的查询.这样就能大大提高 ...
- c#实现记事本
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- StringUtils工具类详解
StringUtils判断字符串大概有四种方法: 下面是 StringUtils 判断是否为空的示例: 判断是否为空,但是要注意,空格不算空,这个最好能不用则不用. StringUtils.isEmp ...
- Atitit.远程接口 监控与木马 常用的api 标准化v2 q216
Atitit.远程接口 监控与木马 常用的api 标准化v2 q216 1. 木马与远程接口 监控的常用的api2 1.1. 文件复制2 1.2. 屏幕定时截图2 1.3. 邮件发送2 1.4. ...
- git 和 svn 的比较
Git VS SVN 1 .功能 主体功能 Git SVN 1.从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上. 1 .SVN是基于关系数据库的(BerkleyDB)或一系列二进制 ...
- PHP -- 问题
@.源码安装,最开始,自己通过 ./config make make install三步,啥参数也没加,安装好之后,发现/usr/local/php下就一个man文件夹,死都没找到php-fpm之 ...
- 【Atheros】内核调试及网卡加载等问题小结
我做的其他很多工作就比较有针对性了,不是什么大众性的问题,比如加统计代码.实现自己的速率调整算法或者加一些自己的控制什么的,就不再单独介绍了,最后呢再罗列一些小问题,供参考. 1. 加载模块(执行wi ...
- html5小趣味知识点系列(一)autofocus
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...