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

分享型网站建设网站建设论文html格式

分享型网站建设,网站建设论文html格式,本地wordpress如何传到服务器上,个人网站备案可以盈利吗文章目录一、数据准备一、UNION 和 UNION ALL二、UNION 的执行顺序#xff08;UNION 和其他语句一同出现#xff09;三、MySQL 使用 UNION#xff08;ALL#xff09; ORDER 导致排序失效四、UNION 报错语法一、数据准备 -- 创建表 CREATE TABLE test_user (ID int(11) NO… 文章目录一、数据准备一、UNION 和 UNION ALL二、UNION 的执行顺序UNION 和其他语句一同出现三、MySQL 使用 UNIONALL 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) ) ENGINEInnoDB AUTO_INCREMENT7 DEFAULT CHARSETutf8;-- 数据插入语句 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 和其他语句一同出现的结果。 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 ;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;因为当 UNIONALL语句和 ORDER BY语句同时出现UNIONALL语句先执行。 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 之后执行。 UNION 、 ORDER BY 和 LIMIT 语句 -- 5、第二个子句中的 order by ,LIMIT 语句同时作用于两个 select 语句 ********* -- 只有1条数据age30 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 使用 UNIONALL ORDER 导致排序失效 通过以下两种方式解决 添加 LIMIT 字段额外增加排序字段 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 语句失效了。 原因UNIONALL 会使 ORDER 失效 解决办法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) 最好的解决方案就是先查询后排序避免上述情况发生。 解决办法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 BYLIMIT 语句注意使用时要加括号否则报错。
http://www.hkea.cn/news/14448304/

相关文章:

  • 沂南网站建设如何做电商运营推广
  • 新注册网站大气腐蚀网站建设
  • 一个网站的后台怎么做wordpress 首页访问量
  • 做网站必须要注册公司么品牌推广的步骤和技巧
  • 网站备案 接入商自己怎么做家政网站
  • 阳光家园广州网站网址宿迁seo
  • 做配资 怎么在网站联系客户有没有知道网址的
  • 网站建设从哪入手怎么把园林设计网站做的酷炫
  • 上饶企业网站建设企业微信官方网站
  • 做加盟网站哪个最好网站企业备案
  • 如何修改网站做一个flash网站多少钱
  • 网站建设ftp上传是空目录做兼职比较好的网站
  • 合肥昱天建设有限公司网站淘宝的网站建设
  • 打折网站运营思路怎么加入网站做微商城
  • 长沙h5手机网站制作深圳北站设计者
  • 手机网站开发模拟陕西安康网站建设
  • 招聘网站数建设怎么做属于自己的域名网站
  • 闵行营销型网站制作哪个网站音乐做的最好的
  • 怎么判断网站是否被k河南网站建设设计
  • 淄博网站运营公司服装花型图案设计网站
  • 建个淘宝那样的网站需要多少钱百度代运营公司
  • 怎样解析网站域名解析解决方案企业网站
  • 怎么在网站投放广告马关县网站建设
  • 如何看网站做打好坏网站开发使用软件环境
  • 做网站界面需要注意什么问题官方网站建设情况
  • 做网站公司在丹麦邢台网站推广费用
  • 网站维护专业梦创义网站建设公司
  • 商城网站建设哪家专业seo上词价格
  • 网站建设马鞍山到哪个网站找内控制度建设
  • 潮动九州网站建设建站用Wordpress还是