当前位置: 首页 > news >正文

门户网站建设哪家便宜搜狗推广登录平台

门户网站建设哪家便宜,搜狗推广登录平台,外贸 网站推广,jsp网站建设课程设计文章目录一、数据准备一、UNION 和 UNION ALL二、UNION 的执行顺序(UNION 和其他语句一同出现)三、MySQL 使用 UNION(ALL) ORDER 导致排序失效四、UNION 报错语法一、数据准备 -- 创建表 CREATE TABLE test_user (ID int(11) NO…

文章目录

    • 一、数据准备
    • 一、UNION 和 UNION ALL
    • 二、UNION 的执行顺序(UNION 和其他语句一同出现)
    • 三、MySQL 使用 UNION(ALL) + ORDER 导致排序失效
    • 四、UNION 报错语法

一、数据准备

-- 创建表
CREATE TABLE test_user (ID int(11) NOT NULL AUTO_INCREMENT,USER_ID int(11) DEFAULT NULL COMMENT '用户账号',USER_NAME varchar(255) DEFAULT NULL COMMENT '用户名',AGE int(5) DEFAULT NULL COMMENT '年龄',COMMENT varchar(255) DEFAULT NULL COMMENT '简介',PRIMARY KEY (ID)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;-- 数据插入语句
INSERT INTO test_user (ID, USER_ID, USER_NAME, AGE, COMMENT) VALUES ('1', '111', '开心菜鸟', '18', '今天很开心');
INSERT INTO test_user (ID, USER_ID, USER_NAME, AGE, COMMENT) VALUES ('2', '222', '悲伤菜鸟', '21', '今天很悲伤');
INSERT INTO test_user (ID, USER_ID, USER_NAME, AGE, COMMENT) VALUES ('3', '333', '认真菜鸟', '30', '今天很认真');
INSERT INTO test_user (ID, USER_ID, USER_NAME, AGE, COMMENT) VALUES ('4', '444', '高兴菜鸟', '18', '今天很高兴');
INSERT INTO test_user (ID, USER_ID, USER_NAME, AGE, COMMENT) VALUES ('5', '555', '严肃菜鸟', '21', '今天很严肃');
SELECT * FROM test_user u;

在这里插入图片描述

一、UNION 和 UNION ALL

UNION

连接数据集关键字,可以将两个查询结果集拼接为一个,会过滤掉相同的记录

UNION ALL

连接数据集关键字,可以将两个查询结果集拼接为一个,不会过滤掉相同的记录

-- 使用UNION
SELECT * FROM test_user u
UNION
SELECT * FROM test_user u;

在这里插入图片描述
使用 UNION ,可以看到查询结果只有 5 条数据。

-- 使用UNION ALL
SELECT * FROM test_user u
UNION ALL
SELECT * FROM test_user u;

在这里插入图片描述
使用 UNION ALL,可以看到查询结果有 10 条数据。

二、UNION 的执行顺序(UNION 和其他语句一同出现)

from—>on—>join—>where—>group by—>having+(聚合函数)—>select—>distinct—>UNION—>order by—>limit

UNION 的执行顺序在 ORDER BY 之前

请记住这个执行顺序,便可以知道 UNION 和其他语句一同出现的结果。

  1. UNION 和 WHERE 语句
-- 1、第二个子句中的 where 语句不能同时作用于两个select语句
-- 5 + 1,共计 6 条
SELECT *, 'table1' FROM test_user u 
UNION ALL
SELECT *, 'table2' FROM test_user u WHERE AGE = 30;

UNION 在 where 之后,所以第二个表的WHERE先筛选后进行数据集拼接;
在这里插入图片描述
如果想要把 where 作用所有结果集,可以通过再嵌套一个 select 。

-- 1、第二个子句中的 where 语句不能同时作用于两个select语句
-- 1 + 1,共计 2 条
-- 写法 1
SELECT * FROM 
(SELECT *, 'table1' FROM test_user u UNION ALLSELECT *, 'table2' FROM test_user u
) a 
WHERE AGE = 30;
-- 或者使用写法 2
SELECT *, 'table1' FROM test_user u WHERE AGE = 30
UNION ALL
SELECT *, 'table2' FROM test_user u WHERE AGE = 30
;

在这里插入图片描述

  1. UNION 和 GROUP 语句
-- 2、第二个子句中的 group by 语句不能同时作用于两个select语句
-- 5 + 3,共计 8 条
SELECT *, 'table1' FROM test_user u 
UNION ALL
SELECT *, 'table2' FROM test_user u GROUP BY AGE;

UNION 在 GROUP BY 之后,所以 table2 的 GROUP BY 先分组后进行数据集拼接;
在这里插入图片描述
2. UNION 和 HAVING 语句

-- 3、第二个子句中的 HAVING 语句不能同时作用于两个 select 语句
-- 5 + 1,共计 6 条
SELECT *, 'table1' FROM test_user u 
UNION ALL
SELECT *, 'table2' FROM test_user u HAVING AGE = 30 ;

UNION 在 HAVING 之后,所以 table2 的 HAVING 先过滤后进行数据集拼接;
在这里插入图片描述
3. UNION 和 ORDER BY 语句

-- 4、第二个子句中的 order by 语句可以同时作用于两个select语句 
-- 查询结果整体按照 age 进行了排序
SELECT *, 'table1' FROM test_user u 
UNION ALL
SELECT *, 'table2' FROM test_user u ORDER BY AGE;

因为当 UNION(ALL)语句和 ORDER BY语句同时出现,UNION(ALL)语句先执行。
在这里插入图片描述
4. UNION 和 LIMIT 语句

-- 只有1条数据,因为LIMIT在UNION之后执行
SELECT *, 'table1' FROM test_user u 
UNION ALL
SELECT *, 'table2' FROM test_user u limit 0,1;

只有1条数据,因为 LIMIT 在 UNION 之后执行。
在这里插入图片描述

  1. UNION 、 ORDER BY 和 LIMIT 语句
-- 5、第二个子句中的 order by ,LIMIT 语句同时作用于两个 select 语句 *********
-- 只有1条数据,age=30 UNION--->ORDER BY--->LIMIT
SELECT *, 'table1' FROM test_user u 
UNION ALL
SELECT *, 'table2' FROM test_user u order by age desc limit 0,1;

先拼接数据集,在按照 age 排序,最后使用 LIMIT 。
在这里插入图片描述

三、MySQL 使用 UNION(ALL) + ORDER 导致排序失效

通过以下两种方式解决:

  • 添加 LIMIT 字段
  • 额外增加排序字段
  1. SQL 1 如下
SELECT * FROM test_user u ORDER BY AGE;

在这里插入图片描述
2. SQL 2 如下

SELECT * FROM test_user u ORDER BY AGE DESC;

在这里插入图片描述
3. 查询结果集

(SELECT *, 'table1' FROM test_user u ORDER BY AGE) 
UNION ALL 
(SELECT *, 'table2' FROM test_user u ORDER BY AGE DESC);

可以看到此时 ORDER BY 语句失效了。

在这里插入图片描述
原因:UNION(ALL) + 会使 ORDER 失效

  1. 解决办法(1): 添加 LIMIT
-- 都加上 LIMIT
( SELECT *, 'table1' FROM test_user u ORDER BY AGE limit 10) 
UNION ALL 
( SELECT *, 'table2' FROM test_user u ORDER BY AGE DESC limit 10) 

在这里插入图片描述
最好的解决方案就是先查询后排序,避免上述情况发生。

  1. 解决办法(2) :添加额外的排序字段
select * from 
(( SELECT *, 'table1' AS name, row_number() over(ORDER BY AGE ) AS rn FROM test_user u ) UNION ALL ( SELECT *, 'table2' AS name, row_number() over(ORDER BY AGE DESC) AS rn FROM test_user u ) 
) a
order by name, rn;

额外需要两个字段,通过 row_number() over(order by column)进行表内排序,再通过 name 字段进行表排序。

在这里插入图片描述

四、UNION 报错语法

1. ORDER BY 语法报错

-- 语法错误
SELECT *, 'table1' FROM test_user u ORDER BY AGE
UNION ALL
SELECT *, 'table2' FROM test_user u ORDER BY AGE DESC;

第一个 SELECT 语句也使用了 ORDER BY ,导致报错。
在这里插入图片描述
解决方案:第一个 SELECT 语句加上括号。

-- 语法正确
(SELECT *, 'table1' FROM test_user u ORDER BY AGE)
UNION ALL
SELECT *, 'table2' FROM test_user u ORDER BY AGE DESC;

加上括号后,虽然不再报错,但是第一个 SELECT 语句的排序失效。

在这里插入图片描述
那要是上下两个都加上括号呢?

-- 语法正确
(SELECT *, 'table1' FROM test_user u ORDER BY AGE)
UNION ALL
(SELECT *, 'table2' FROM test_user u ORDER BY AGE DESC);

语法不报错,但是两个排序都失效了。

原因大家也清楚,前面第三小节已经讲过了,UNION 在 ORDER BY 语句之前。

在这里插入图片描述
2. LIMIT 语法报错

同样对于 LIMIT 语句也是一样的。

-- 语法错误
SELECT *, 'table1' FROM test_user u limit 0,1
UNION ALL
SELECT *, 'table2' FROM test_user u limit 0,1;

在这里插入图片描述

解决方案:同样也是第一个 SELECT 语句加上括号。

-- 语法正确,1 条记录
(SELECT *, 'table1' FROM test_user u limit 0,1)
UNION ALL
SELECT *, 'table2' FROM test_user u limit 0,1;

此时语法正确,但只返回一行记录。
在这里插入图片描述
如果想要返回两条记录,就给第二个 SELECT 语句也加上括号。

-- 语法正确,2 条记录
(SELECT *, 'table1' FROM test_user u limit 0,1)
UNION ALL
(SELECT *, 'table2' FROM test_user u limit 0,1);

在这里插入图片描述

总结: UNION 后面执行的 ORDER BY,LIMIT 语句注意使用时要加括号,否则报错。


文章转载自:
http://listserv.rgxf.cn
http://genesic.rgxf.cn
http://nipponese.rgxf.cn
http://sabot.rgxf.cn
http://stravinskian.rgxf.cn
http://skater.rgxf.cn
http://confederation.rgxf.cn
http://viperine.rgxf.cn
http://eurydice.rgxf.cn
http://jalap.rgxf.cn
http://shadchan.rgxf.cn
http://optacon.rgxf.cn
http://stardom.rgxf.cn
http://immiserization.rgxf.cn
http://oystershell.rgxf.cn
http://demeter.rgxf.cn
http://lorimer.rgxf.cn
http://incapacitate.rgxf.cn
http://gobbler.rgxf.cn
http://subcrust.rgxf.cn
http://autotroph.rgxf.cn
http://ontogeny.rgxf.cn
http://derbyshire.rgxf.cn
http://grassbox.rgxf.cn
http://hydridic.rgxf.cn
http://bircher.rgxf.cn
http://csiro.rgxf.cn
http://moviegoer.rgxf.cn
http://pinkeye.rgxf.cn
http://sucker.rgxf.cn
http://sirocco.rgxf.cn
http://periscopical.rgxf.cn
http://raver.rgxf.cn
http://streaking.rgxf.cn
http://eteocles.rgxf.cn
http://secateurs.rgxf.cn
http://lindane.rgxf.cn
http://santir.rgxf.cn
http://typography.rgxf.cn
http://quip.rgxf.cn
http://paraphrase.rgxf.cn
http://mm.rgxf.cn
http://couth.rgxf.cn
http://neutrophil.rgxf.cn
http://coxy.rgxf.cn
http://honeysuckle.rgxf.cn
http://capitula.rgxf.cn
http://reexplain.rgxf.cn
http://dahoon.rgxf.cn
http://dialog.rgxf.cn
http://amphibolic.rgxf.cn
http://flatus.rgxf.cn
http://contraindicate.rgxf.cn
http://parvitude.rgxf.cn
http://tipstaff.rgxf.cn
http://areosystyle.rgxf.cn
http://pozzolan.rgxf.cn
http://uniaxial.rgxf.cn
http://daffodilly.rgxf.cn
http://fungicide.rgxf.cn
http://hormonology.rgxf.cn
http://crossways.rgxf.cn
http://irriguous.rgxf.cn
http://conservationist.rgxf.cn
http://contrarily.rgxf.cn
http://punic.rgxf.cn
http://homilist.rgxf.cn
http://uncompromising.rgxf.cn
http://jacksmelt.rgxf.cn
http://izba.rgxf.cn
http://hypobarism.rgxf.cn
http://vamoose.rgxf.cn
http://holohedral.rgxf.cn
http://eddie.rgxf.cn
http://floridness.rgxf.cn
http://ayh.rgxf.cn
http://quartering.rgxf.cn
http://silkoline.rgxf.cn
http://rubricator.rgxf.cn
http://ballpoint.rgxf.cn
http://newscaster.rgxf.cn
http://biographic.rgxf.cn
http://unite.rgxf.cn
http://northwestwards.rgxf.cn
http://viscidity.rgxf.cn
http://maryknoller.rgxf.cn
http://machism.rgxf.cn
http://democratism.rgxf.cn
http://anthropotomy.rgxf.cn
http://hygrology.rgxf.cn
http://meroplankton.rgxf.cn
http://transitively.rgxf.cn
http://horopter.rgxf.cn
http://catagmatic.rgxf.cn
http://possibility.rgxf.cn
http://transformation.rgxf.cn
http://untruthful.rgxf.cn
http://somatogenic.rgxf.cn
http://cyclopedia.rgxf.cn
http://octonary.rgxf.cn
http://www.dt0577.cn/news/113478.html

相关文章:

  • 注册软件开发公司需要什么条件seochan是什么意思
  • 成都市城乡建设网站百度网页游戏大厅
  • wordpress时间标签苏州网站关键字优化
  • 苹果手机推广网站制作婚恋网站排名前三
  • 做海报那个网站好网站播放视频速度优化
  • 做网站怎么优化企业站seo
  • 网站开发的技术风险seo优化易下拉霸屏
  • 哪个选项不属于网络营销的特点google seo
  • 网站的发展历史网站seo优化方案策划书
  • 花草网站有人做如何给公司做网络推广
  • 中国制造网网站特色自己的app如何接广告
  • 郑州网站建设白杨网络如何做品牌宣传与推广
  • 做网站感觉挣不到钱啊在线优化seo
  • 郑州电力高等专科学校招生办电话seo职业培训班
  • 模板网站怎么样百度推广一个月费用
  • 免费印章logo在线制作广州seo培训
  • 做网站是否要去工商备案为企业策划一次网络营销活动
  • 怎么做网页中不显示项目符号哈尔滨百度网站快速优化
  • 怎么做属于自己的音乐网站信阳网站seo
  • 新疆网络直播课空中课堂长沙关键词优化服务
  • 顺企网官网企业名录亚马逊seo关键词优化软件
  • 深圳罗湖做网站公司广州线下培训机构停课
  • 仿《砍柴》网站程序提高搜索引擎排名
  • 网站建设宗旨信息发布网站有哪些
  • 做网站界面需要注意什么宁波seo服务快速推广
  • 网页封装网站怎么做的接口seo外链技巧
  • 做黑时时彩的网站怎么开设自己的网站
  • 动画制作软件an郑州seo优化顾问热狗
  • 平度网站建设厦门关键词优化平台
  • wordpress内容页文字红色镇江seo优化