本文将为您提供关于SELECTUNION和ORDERBY在mysql..如何?的详细介绍,我们还将为您解释selectunionselect的相关知识,同时,我们还将为您提供关于03-mySQLsel
本文将为您提供关于SELECT UNION和ORDER BY在mysql ..如何?的详细介绍,我们还将为您解释select union select的相关知识,同时,我们还将为您提供关于03-mySQL select、CONCAT、order BY 数据查询语句、mysql Incorrect usage of UNION and ORDER BY 错误备忘、MySQL order by 在 union 中使用实例分析、mysql order by 对select查询结果集排序的实用信息。
本文目录一览:- SELECT UNION和ORDER BY在mysql ..如何?(select union select)
- 03-mySQL select、CONCAT、order BY 数据查询语句
- mysql Incorrect usage of UNION and ORDER BY 错误备忘
- MySQL order by 在 union 中使用实例分析
- mysql order by 对select查询结果集排序
SELECT UNION和ORDER BY在mysql ..如何?(select union select)
我想从单个表中获取所有行,但是以不同的方式对其进行排序。例如我写
(SELECT * FROM table1
ORDER BY fieldA ASC LIMIT 3
)
UNION
(
SELECT * FROM table1
ORDER BY FieldB DESC
)
它的工作原理是,忽略了(FIELDB DESC)的二阶…有人知道为什么吗?谢谢
03-mySQL select、CONCAT、order BY 数据查询语句
03-mySQL select、CONCAT、order BY 数据查询语句
/*一、 插入
INSERT INTO SUBJECT (`name`, classhour, majorid)
VALUES
VALUES
(''工商管理'', 40, ''16'')*/
-- 查询student表中的数据
-- SELECT *FROM student
-- 根据查询条件查询数据 WHERE
-- SELECT *FROM student
-- WHERE majorid=''计算机''
-- select * FROM subject where majorid=8
-- 查询课时数在40~55之间的科目数 BETWEEN...AND...
-- select *FROM `subject` WHERE classhour BETWEEN 40 and 55
-- 查询majorid是8或16的数据 in() / OR
-- SELECT * FROM `subject` WHERE majorid in (8,16)
-- SELECT *FROM `subject` WHERE majorid=8 or majorid=16
-- 查询majorid 不是16 的数据 not IN !=
-- SELECT *FROM `subject` WHERE majorid !=16
-- SELECT *FROM `subject` WHERE majorid not IN(16)
-- 查找name=Annie的学生 SELECT 列 from 表 where 条件
-- SELECT * FROM student WHERE NAME=''Annie''
-- 查询考试不及格的成绩 > <
-- SELECT *FROM result WHERE score<60
-- 查询科目编号majorid是16 并且 课时数classhour55以下的科目数据 AND
-- SELECT *FROM `subject` WHERE majorid=16 AND classhour<55
-- 列别名 查询时使用,不修改原始表
-- 1.使用 as 给查询出的列取别名 select ''id'' AS ''编号'', NAME AS ''学科名'' FROM `subject`
-- select NAME AS ''学科名'' FROM `subject`;
-- 2.给常量取别名 SELECT 1 as ''数字''
-- SELECT 1 AS ''数字'' FROM `subject`
-- 3.为组合生成的列 取别名 CONCAT(str1,str2,...) 函数进行字符串拼接
-- SELECT CONCAT(NAME,''&'',classhour ,''*'',majorid) AS ''组合'' FROM `subject`
-- --SQL 中单引号和双引号都可以表示字符串
-- -‘+’符号只能做算数运算,不能当连字符用
-- 4.在取别名的时候 AS 关键字可以省略不写
-- SELECT id ''编号'', name ''名称'' FROM major
-- 条件语句
-- 1.判断咧为空 IS NULL 和 不为空 IS NOT NULL
-- SELECT *FROM result WHERE score IS NULL
-- SELECT *FROM result WHERE score IS NOT NULL
-- 2.限制查询出的行数 LIMIT 开始位置,返回行数 LIMIT 放在语句末尾
-- 查询五行
-- SELECT * FROM result LIMIT 5
-- 查询第一行到第五行的数据
-- SELECT * FROM result LIMIT 1,5
-- 查询第五行开始 往后追加五行
-- SELECT * FROM result LIMIT 5,5
-- -----------------------------------
-- 查询 majorid=8 和10 的科目名称 IN 的用法
-- SELECT *FROM subject WHERE majorid in (8,10)
-- 查询不是 8和 10的数据 NOT IN
-- SELECT *FROM subject WHERE majorid not in (8,10)
-- 去除重复记录 DISTINCT
-- SELECT DISTINCT NAME FROM `subject`
/*
模糊查询
查询出所有姓张的学生信息
SELECT *FROM student where name like ''张%''
查询出姓名中带有 马 字的学生信息
SELECT *from student where name like ''%马%''
查询出只有名字里有马的学生信息
select *from student where name like ''_马%''
通配符定义:
_ 匹配一个 任意字符
% 匹配任意多个任意字符
*/
-- 排序
-- order BY <列名> 根据某列排序 升序 ASC
-- SELECT * from result order by score
-- 降序 DESC
-- SELECT * from result order by score DESC
-- 多列排序
-- select *from `subject` Order by majorid ASC , classhour DESC
/*综合应用
1.已知student 的emali 中有空值
2.在使用email 正序排序的时候如何将空值放在查询结果末尾
3.运用知识点
case when 语句
多列 排序
表别名
列别名
SELECT
CASE
WHEN emali IS NULL THEN
''1''
ELSE
''0''
END AS tem ,
stu.*
FROM
student stu
ORDER BY
tem,
stu .email
*/
-- 文本处理函数
-- `LEFT`(str,len) 返回从左边起左边指定长度的字符
-- SELECT name ,LEFT(name ,2)FROM student
-- `RIGHT`(str,len) 返回从右边起左边指定长度的字符
-- SELECT NAME,RIGHT(name ,3) FROM student
-- LOWER(str)将字符串转换为小写
-- SELECT NAME , LOWER(name ) from student
-- UPPER(str) 将字符串转换为大写
-- SELECT name ,UPPER(name ) from student
-- LENGTH(str)返回字符串的长度
-- SELECT name ,LENGTH(name ) from student
-- LTRIM(str) 去掉字符串左边空格
-- SELECT name ,ltrim(NAME) FROM student;
-- RTRIM(str) 去掉字符串右边的空格
-- SELECT name , RTRIM(name )FROM student;
-- TRIM(str) 去掉字符串左右两边的空格
-- SELECT name ,TRIM( name ) from student
-- 日期时间函数
-- 聚合函数
-- MIN(expr)求最小值;
-- MAX(expr)求最大值;
-- COUNT(expr)统计个数;
-- SUM(expr) 求和
-- AVG([DISTINCT] expr)求平均值
-- 1.统计student 表中人数 结果=9
-- SELECT COUNT(*) FROM student
-- 注:COUNT(expr) 函数的参数可以为 *、列名‘或一个数字
-- 若为列则不会统计该列 NULL(为空)的数据
/*- 求 majorid 为8 的课时数
- 1.求最大课时是多少 结果1=65
SELECT MAX(classhour)FROM `subject` WHERE majorid=8;
-- 2.求最少课时 结果2 45
SELECT MIN(classhour) from `subject` WHERE majorid=8;
-- 3.平均课时 结果3 56.8333
SELECT AVG( classhour) from `subject` WHERE majorid=8
注: 常见问题
聚合函数用来统计多条数据的值,因此使用聚合函数的
查询语句,select子句中的其他列是没有意义的
• 例如: score 与 studentno 没有直接关系
• select avg(score),studentno from result where
subjectid=1
*/
mysql Incorrect usage of UNION and ORDER BY 错误备忘
出现这个错误的语句是酱紫的
select xxx from aaa order by xxx
union all
select yyy from bbb order by yyy
错误原因居然是,如果同时用了union all 和 order by,union all的子句要加上括号。
所以下面的写法就不会报错了。
(select xxx from aaa order by xxx)
union all
(select yyy from bbb order by yyy)
MySQL order by 在 union 中使用实例分析
下面是用于例子测试的两张原始数据表:
article 文章表:
aid | title | content |
---|---|---|
1 | 文章1 | 文章1正文内容... |
2 | 文章2 | 文章2正文内容... |
3 | 文章3 | 文章3正文内容... |
blog 日志表:
bid | title | content |
---|---|---|
1 | 日志1 | 日志1正文内容... |
2 | 文章2 | 文章2正文内容... |
3 | 日志3 | 日志3正文内容... |
UNION 子句中使用 ORDER BY
子句中使用 ORDER BY,即将 SELECT 子句的结果先排序,然后再把这些子句查询的结果进行集合。
在子句中使用 ORDER BY,由于优先级问题,需要将整个子句加圆括号(),且必须与 LIMIT 结合使用:
1 2 3 |
|
返回查询结果如下:
aid | title |
---|---|
3 | 文章3 |
2 | 文章2 |
1 | 文章1 |
3 | 日志3 |
2 | 文章2 |
1 | 日志1 |
UNION 整句中使用 ORDER BY
如果想使用 ORDER BY 或 LIMIT 来对全部 UNION 结果进行分类或限制,则应对单个 SELECT 语句加圆括号,并把 ORDER BY 或 LIMIT 放到最后一个的后面。
1 2 3 4 |
|
返回查询结果如下:
aid | title |
---|---|
3 | 文章3 |
3 | 日志3 |
2 | 文章2 |
2 | 文章2 |
1 | 文章1 |
1 | 日志1 |
整句中使用 ORDER BY,去掉 SELECT 子句中的圆括号虽然结果是一样的,但为了语句清晰,建议不要省略圆括号。
UNION ORDER BY 应用于别名
如果 SELECT 中使用到了字段别名,则 OEDER BY 必须引用别名:
1 |
|
mysql order by 对select查询结果集排序
mysql order by 语法:
1 2 |
|
说明:
- 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
- 你可以设定多个字段来排序。
- 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升排列。
- 你可以添加 WHERE...LIKE 子句来设置条件。
mysql order by实例
首先创建一张表:
1 2 3 4 5 6 7 8 9 10 11 |
|
向表中插入若干数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
查询数据并对结果集排序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
今天关于SELECT UNION和ORDER BY在mysql ..如何?和select union select的分享就到这里,希望大家有所收获,若想了解更多关于03-mySQL select、CONCAT、order BY 数据查询语句、mysql Incorrect usage of UNION and ORDER BY 错误备忘、MySQL order by 在 union 中使用实例分析、mysql order by 对select查询结果集排序等相关知识,可以在本站进行查询。
本文标签: