mysql 排序查询字段

排序查询
语法:

select 查询字段1
from 表
where 【筛选条件】
order by 要排序字段2 asc升序、desc 降序,要排字段3 asc升序、desc降序
如果不写默认为升序

案例:查询员工信息,要求工资从高到低排序

SELECT
    *
FROM
    employees
ORDER BY salary DESC;

#案例2:查询部门编号>=90,按入职日期升序的员工信息

SELECT
    *
FROM
    employees
WHERE
    department_id >=90
ORDER BY hiredate ASC;

#案例:按表达式排序,如按年薪高低显示年薪

SELECT
    salary*12*(1+IFNULL(commission_pct,0))
FROM
    employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

#案例:将排序字段起别名,再将按别名排序

SELECT
    salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
    employees
ORDER BY
    年薪 ASC;

#案例:按姓名的长度降序显示员工的姓名和工资(按函数排序)
SELECT LENGTH(‘aaaa‘); #显示长度为4

SELECT
    LENGTH(last_name) AS 字节长度,
    last_name,
    salary
FROM
    employees
ORDER BY
    LENGTH(last_name) DESC;

#案例:查询员工信息,要求先按工资排序,再按员工编号排序,(按多个字段排序)

SELECT
    *
FROM
    employees
ORDER BY
    salary ASC,employee_id DESC;

原文地址:https://blog.51cto.com/14437184/2435269

时间: 2024-10-08 15:28:29

mysql 排序查询字段的相关文章

Mysql排序查询

#排序查询/*语法:select 查询列表 from 表 [where 筛选条件] order by 排序序列 [asc/desc] */SELECT * FROM employees ORDER BY salary DESC; #默认是asc(升序) #查询部门编号>=90的员工信息,按入职时间的先后排序SELECT * FROM employees WHERE department_id>=90 ORDER BY hiredate ASC; #按年薪的高低显示员工的信息和年薪SELECT

MySQL自定义查询字段排序

同事在做抽奖排名的时候有个问题 需要按照 一等奖 二等奖 三等奖 未中奖 的形式输出数据 问到我如何排序. 数据库设计如下 用一个prize_code字段标示了是否中奖 1是一等奖 2是二等奖 3是三等奖 0是未中奖 思考许久 本来开始想用union 写出SQL如下 select * from (SELECT * FROM data where prize_code>0 order by prize_code asc) as tmp UNION select * from data where

mysql根据汉字拼音排序查询

例如现在有一张数据表label,字段为id.name,此表的字符集设置为gb2312,以gb2312_chinese_ci整理. 设置InnoDB引擎的字符集也为简体中文,且整理为gb2312_chinese_ci. 查询语句如下: select * from label order_by name collate gb2312_chinese_ci; 效果如下: tip:有时候结果不是很准确,不知道是不是因为字符集选择的不当导致的,知道的朋友,请解答下,谢谢! mysql根据汉字拼音排序查询,

mysql GROUP_CONCAT 查询某个字段(查询结果默认逗号拼接)

Mysql 的 GROUP_CONCAT 函数默认将查询的结果用逗号拼接并返回一个字符串,如:李四,long,张三 1. 常用方式 select GROUP_CONCAT(user_name) userName from user where type = 1 2. GROUP_CONCAT 结合 IN 的使用 -- 查询指定id对应的name值,返回结果为 name7,name4,name2,name5    order by field(org_id,0,7,4,2,5)表示按照给定字段的顺

mysql查询字段值为数字

原文:mysql查询字段值为数字 我想查询字段值为数字的sql如下:select * from tj_item_result where tj_value REGEXP '^[0-9]'

Mysql的varchar字段按照数字来排序

今天遇到个关于排序的问题,当时建了个表,表中的宽的字段用varchar来存储,因为可能要存储单位所以没有用int存储.但后期改了需求说是不用录入单位了,当时想着反正都能用也就没有修改字段类型,保留了varchar. 下面是正题: 这是未排序时的显示 现在把它升序排序 发现排序出现问题,1000在120的前面,解决这个问题只需要转换类型就行了,排序的字段+0就可以转换 Sql: select rule from th_steel order by rule+0 asc; 也可以用mysql的函数来

MySQL(五)DQL之排序查询

1.语法: select 查询列表 from 表名[where  筛选条件]order by 排序的字段或表达式; 2.特点: (1)asc代表的是升序,可以省略:desc代表的是降序 (2)order by子句可以支持 单个字段.别名.表达式.函数.多个字段 (3)order by子句在查询语句的最后面,除了limit子句 3.按单个字段排序 SELECT * FROM employees ORDER BY salary DESC; 4.添加筛选条件再排序 案例:查询部门编号>=90的员工信息

MySQL优化分库分表,为什么要分表,分表以后如何进行排序查询,业务如何设计?

MySQL优化分库分表,为什么要分表,分表以后如何进行排序查询,业务如何设计? 昨天面试新人的时候,遇到了这么一个问题,按照自己的想法大体聊了一些,但大多是感性的,并没有完整的了解why and how. 今天查了一些相关的资料,包括<MySQL性能调优与架构设计>.<高性能Mysql>,慢慢的整体理解,请大家指正. 之一,为什么要分表? 分表,按形式,有水平分表和主附分表.水平分表常见于按ID取模或者按日期将相同表结构的内容散列到不同的表上,主附分表常见于有对应关系的多张表,通过

MySQL对查询结果排序

1.排序查询 SELECT column1,column2,......... FROM table order by column asc | desc (1)对英语成绩排序后输出 select name,english from grade order by english desc; (2)对总分成绩排序后输出 select name 姓名 ,chinese+math+english 总分 from grade order by 总分 desc; (3)对赖姓的学生成绩排序输出 selec