添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
SELECT `id`,`username`,`mobile`,`time`,id AS leader 
FROM `grouporder_leader` 
WHERE `courseid` = 21 AND `merchid` = 23 AND `status` = 1 
UNION ALL 
SELECT leadorderid,username,mobile,time,null 
FROM `grouporder_partner`
WHERE courseid=21 and status=1 and merchid=23
结果如下
SELECT `id`,`username`,`mobile`,`time`,id AS leader 
FROM `grouporder_leader`
WHERE `courseid` = 21 AND `merchid` = 23 AND `status` = 1 
ORDER BY time DESC 
UNION ALL 
SELECT leadorderid,username,mobile,time,null 
FROM `grouporder_partner`
WHERE courseid=21 and status=1 and merchid=23 
ORDER BY time DESC
执行这条SQL语句之后就报错。
3.创建临时表

使用类似于创建临时表的方法保存查询结果,然后对临时表进行查询排序。

SELECT id,username,mobile,time,leader 
FROM (SELECT `id`,`username`,`mobile`,`time`,id AS leader 
	FROM `grouporder_leader` WHERE `courseid` = 21 AND `merchid` = 23 AND `status` = 1 
	UNION ALL 
	SELECT leadorderid,username,mobile,time,null 
	FROM `grouporder_partner` WHERE courseid=21 and status=1 and merchid=23
ORDER BY time DESC


4.起别名

不知道为什么第3步中查询依旧没有,然后对UNION查询的结果起个别名,然后再查询排序就没问题了。

SELECT a.id,a.username,a.mobile,a.time,a.leader 
FROM (SELECT `id`,`username`,`mobile`,`time`,id AS leader 
	FROM `grouporder_leader` WHERE `courseid` = 21 AND `merchid` = 23 AND `status` = 1 
	UNION ALL 
	SELECT leadorderid,username,mobile,time,null 
	FROM `grouporder_partner` WHERE courseid=21 and status=1 and merchid=23
) AS a 
ORDER BY time DESC
结果就正确了

查出来就好说了,再进行去重或者其他操作,也没问题.

SELECT DISTINCT a.id,a.username,a.mobile,FROM_UNIXTIME(a.time,'%Y/%m/%d') as _time,a.leader 
FROM (SELECT `id`,`username`,`mobile`,`time`,id AS leader 
	FROM `grouporder_leader` WHERE `courseid` = 21 AND `merchid` = 23 AND `status` = 1 
	UNION ALL 
	SELECT leadorderid,username,mobile,time,null 
	FROM `grouporder_partner` WHERE courseid=21 and status=1 and merchid=23
) AS a 
ORDER BY time DESC
项目中有时候因为某些不可逆转的原因使得表中存储的数据难以满足在页面中的展示要求。之前的项目上有文章内容的展示功能,文章分为三个状态待发布、已发布、已下线。 他们在数据表中判断状态的字段(PROMOTE_STATUS)值分别为0、1、2。一开始的需求是文章只展示待发布和已发布,已发布排在待发布前面,并且两种状态下在根据自己的情况去 排序 。这样的实现比较简单,如下的order by语句就可以实现了。 order by PROMOTE_STATUS desc ,SEQUENCE_ID desc…… 结果移交测试之后,产品觉得这里可以优化下,文章的展示要改为已发布、待发布、已下线(没错,已下线它突然就要 在实际的查询过程中我们时常会有这样的需求:某一类数据很重要要排在前面,其他数据排在后面,默认安装创建时间或者其他字段进行 排序 ,这时候最好的办法就是用 union 将查询到的两个数据集进行组合 排序 ,添加一个伪列对分组进行组外 排序 sql 如下: select * from( SELECT *,1 as 'sort' FROM sakila.film where rating='G' union sel... 今天在开发一个存储过程的是遇到一个 问题 ,Oracle 数据库 多超过2个表使用 union all 查询结果进行 排序 时报 排序 字段无效。经一番周折终于解决了 问题 ,在此分享一下解决方法。 3张 数据库 表:t1,t2,t3 t1表字段id,name,sex t2表字段no,name,sex t3表字段sno,name,grad 2表查询语句:select id,name,sex from (selec... select '销售订单审批' as order_type, '待审批' as status,currency,audit_datewhere supervise = '已送审' union all select '采购订单审批' as order_type, '待审批' as status,where o.supervise = '已送审' order by order_number。 1 使用 union 的时候会报错:Incoreect usage of union and Order by (不正确的使用 union 和order by) 2 解决上述 问题 的办法: (1) 在语句的最后添加order by关键字 例如 select * from t1 union select * from t2 order by 字段 (2) 如果想要对未 union 前两个 sql 语句的查询结果进行 排序 的话要使用如下的方法: select * from( select * from t1 order by 字 SQL 用了 Union 排序 应该怎么实现 最近使用 SQL 语句进行 UNION 查询,惊奇的发现: SQL 问题 UNION 查询也没 问题 ,都可以得到想要的结果,可是在对结果进行 排序 的时候,却出 问题 了。 日常开发中,如果实用 UNION ALL合并两个已经排好序的结果集的时候,需求是第二个结果集数据排在第一个结果集数据下面,单纯的实用order by是无效的,因为order by的优先级比 UNION ALL低。 1. UNION 查询没 问题 SELECT `id`,`username`,`mobile`,`time` 分表以后会做连表查询,如果只是简单的使用yii union ,并不能实现分页效果,数据会在每页都全部显示出来,要想实现 union 分页 ,必须再进行一次整体查询才可以,图中框选的就是实现分页的关键代码。 2.多字段 排序 : $all = Questions::find()->orderBy('createTime desc')->asArray()-... 最近使用 SQL 语句进行 UNION 查询,惊奇的发现: SQL 问题 UNION 查询也没 问题 ,都可以得到想要的结果,可是在对结果进行 排序 的时候,却出 问题 了。 1. UNION 查询没 问题 (感谢dingjun123版主 为本文提供帮助) union 怎么 排序 ?许多人肯定会说 根据第一字段来 排序 ,呵呵,这个答案能得50分!考虑到如果select的第一个字段是重复时,会怎样?看一个测试! SQL > select 1 ... SQL 优化必知技巧—— 避免 排序 我们知道 sql 语言中,用户不能显示地命令 数据库 进行 排序 操作。对用户隐藏这样操作正式 SQL 的设计思想。但 数据库 有些命令会对结果进行 排序 ,当数据量较大时, 排序 会非常耗时。本文我们讨论如何避免无谓的 排序 ,提升 SQL 执行效率。 会进行 排序 SQL 命令 下面列举会 排序 的代表性运算: GROUP BY 子句 ORDER BY 子句 聚合函数(SUM,COUNT,AV... SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意, UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 SELECT column_name(s) FROM table_name1 UNION SELECT c...