视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQLorderby在union中使用实例分析
2020-11-09 19:56:51 责编:小采
文档


下面是用于例子测试的两张原始数据表:

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 结合使用:

(SELECT aid,title FROM article ORDER BY aid DESC LIMIT 10) 
UNION ALL
(SELECT bid,title FROM blog ORDER BY bid DESC LIMIT 10)

返回查询结果如下:

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 放到最后一个的后面。

(SELECT aid,title FROM article) 
UNION ALL
(SELECT bid,title FROM blog)
ORDER BY aid DESC

返回查询结果如下:

aid title
3 文章3
3 日志3
2 文章2
2 文章2
1 文章1
1 日志1

整句中使用 ORDER BY,去掉 SELECT 子句中的圆括号虽然结果是一样的,但为了语句清晰,建议不要省略圆括号。

UNION ORDER BY 应用于别名

如果 SELECT 中使用到了字段别名,则 OEDER BY 必须引用别名:

(SELECT a AS b FROM table) UNION (SELECT ...) ORDER BY b

下载本文
显示全文
专题