mysql order by

order by

排序:在结果集出来之后才有意义 必须在where ,group by ,having 之后

desc(降序)/asc(升序)

用字段排序

用shop_price 降序排列

select goods_name,cat_id,shop_price from goods where cat_id=4 order by shop_price desc;

多个排序选择,先根据cat_id,然后shop_price

select cat_id,shop_price,goods_name from goods order by cat_id ,shop_price;

limit限制 limit [pos, 可选偏移量] 数量

升序排列 取出前十名

select goods_id,goods_name from goods where cat_id=3 order by shop_price asc limit 10;

价格最高的前五名

mysql> select goods_name ,shop_price from goods order by shop_price desc limit 0,5;

等同

mysql> select goods_name ,shop_price from goods order by shop_price desc limit 5;

+----------------+------------+

| goods_name     | shop_price |

+----------------+------------+

| 多普达Touch HD      |    5999.00 |

| 诺基亚N96           |    3700.00 |

| 诺基亚N85           |    3010.00 |

| testPhone      |    3000.00 |

| 夏新T5             |    2878.00 |

+----------------+------------+

价格最高的 从第三名开始的三名(或者说是第三名到第五名)

mysql> select goods_name ,shop_price from goods order by shop_price desc limit 2,3;

+------------+------------+

| goods_name | shop_price |

+------------+------------+

| 诺基亚N85       |    3010.00 |

| testPhone  |    3000.00 |

| 夏新T5         |    2878.00 |

+------------+------------+

取出价格最高的商品

mysql> select goods_name ,shop_price from goods order by shop_price desc limit 1;

+----------------+------------+

| goods_name     | shop_price |

+----------------+------------+

| 多普达Touch HD      |    5999.00 |

+----------------+------------+

技巧 :[判断where] [分组group_by] [过滤having] [排序order by] [筛选limit]

取出每个类型中 最新的产品

select cat_id, goods_id ,goods_name from(

(select cat_id,goods_id ,goods_name from goods order by cat_id desc,goods_id desc ) as tmp

)group by cat_id order by cat_id desc;

select cat_id,goods_id ,goods_name from goods where goods_id in (

select max(goods_id) from goods group by cat_id

) order by cat_id desc;

查询出来的结果可以是

单列单行 可以用=   再次过滤

单列多行 可以用in  再次过滤

多列多行 可以用from 再次过滤

时间: 2024-08-27 08:16:40

mysql order by的相关文章

mysql order by 排序的问题

参考博客http://blog.csdn.net/hollboy/article/details/13296601 mysql order by 的排序在今天时候遇到了问题 情景是:将排序的字段设置成varchar类型了,然后排序时候并没有按从大到小的顺序 按照图中的顺序应该是正序,9排在最上边,但是实际上是666排在最上边 解决办法之一 实际情况是先按最左边的开始排序然后在一位一位比下去,这里在写sql时候的解决办法可以是加0,或者前面加上--也可以哦 解决办法之二 将字段类型换成int类型看

MySQL Order By Rand()效率【转载】

最近由于需要大概研究了一下MYSQL的随机抽取实现方法.举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1. 但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描.但是在MYSQL 3.23版本中,仍然可以通过ORDER BY RAND()来实现随机. 但是真正测试一下

MYSQL随机抽取查询 MySQL Order By Rand()效率问题

MYSQL随机抽取查询:MySQL Order By Rand()效率问题一直是开发人员的常见问题,俺们不是DBA,没有那么牛B,所只能慢慢研究咯,最近由于项目问题,需要大概研究了一下MYSQL的随机抽取实现方法 要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1. 但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND

mysql order by多字段排序

mysql order by多字段排序,在同一表中必须按字段顺序,否则以最后一字段的排序为准,其他无效. 如:ORDER BY `user`.`state` DESC , `user`.`order_by` ASC state字段在order_by字段前面

Mysql Order By 字符串排序,mysql 字符串order by

Mysql Order By 字符串排序,mysql 字符串order by ============================== ?Copyright 蕃薯耀 2017年9月30日 http://fanshuyao.iteye.com/ 一.问题描述: Mysql排序时如果用的的字段为字符串型的,排序规则是这样的:如1,10,2,20,3,4,5,这种排序是按照字符从第一个字符开始比较出来的,但不是我想要的,我想要的是:1,2,3,4,5--,10,20这种. 二.解决方案 排序时,把

Python MySQL Order By

章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python MySQL Where Python MySQL Order By Python MySQL Delete Python MySQL 删除表 Python MySQL Update Python MySQL Limit Python MySQL Join 对结果排序 可以使用ORDER BY语句,按升

PHP MySQL Order By

ORDER BY 关键词用于对记录集中的数据进行排序. ORDER BY 关键词 ORDER BY 关键词用于对记录集中的数据进行排序. ORDER BY 关键词默认对记录进行升序排序. 如果你想降序排序,请使用 DESC 关键字. 语法 SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC 实例 下面的实例选取 "Persons" 表中存储的所有数据,并根据 "Age" 列对结

mysql ORDER BY,GROUP BY 和DISTINCT原理

前言 除了常规的Join语句之外,还有一类Query语句也是使用比较频繁的,那就是ORDERBY,GROUP BY以及DISTINCT这三类查询.考虑到这三类查询都涉及到数据的排序等操作,所以我将他们放在了一起,下面就针对这三类Query语句做基本的分析. ORDER BY 的实现与优化 在MySQL中,ORDERBY的实现有如下两种类型: 一种是通过有序索引而直接取得有序的数据,这样不用进行任何排序操作即可得到满足客户端要求的有序数据返回给客户端: 另外一种则需要通过MySQL的排序算法将存储

Mysql order by与limit混用陷阱

在Mysql中我们常常用order by来进行排序,使用limit来进行分页,当需要先排序后分页时我们往往使用类似的写法select * from 表名 order by 排序字段 limt M,N.但是这种写法却隐藏着较深的使用陷阱.在排序字段有数据重复的情况下,会很容易出现排序结果与预期不一致的问题. 比如现在有一张user表,表结构及数据如下: 表结构 表数据 现在想根据创建时间升序查询user表,并且分页查询,每页2条,那很容易写出sql为:select * from user orde

改进MySQL Order By Rand()的低效率

Author:flymorn Source:飘易Categories:PHP编程 PostTime:2011-1-14 15:35:07 正 文:   最近由于需要研究了一下MYSQL的随机抽取实现方法.举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是: SELECT * FROM content ORDER BY RAND() LIMIT 1 .[飘易注:3万条记录查询花费 0.3745 秒(下同):从mysql slow query log看出"ORDER BY RA