zoukankan      html  css  js  c++  java
  • Mysql union 和 order by 同时使用需要注意的问题

    1.直接使用会报错,

    Incorrect usage of UNION and ORDER BY。

    SELECT * FROM t1 WHERE 1=1 ORDER BY t1.id DESC
    UNION
    SELECT * FROM t1 WHERE 1=1 ORDER BY t1.id  DESC

    原因是有两个order by ,可以把前一个select的order by去掉,但这样排序就是union 后的整个结果集排序。显然不符合需求

    因为使用union 就是为了 先查询出第一个结果集 放前面 按某个规则排序。然后再查询出第二个结果集,整体放在第一个结果集后面 ,按某规则排序。

    2.有一个坑是 给两个select语句分别加括号,虽然不报错了,但是order by 不起作用。

    (SELECT * FROM t1 WHERE 1=1 ORDER BY t1.id DESC)
    UNION
    (SELECT * FROM t1 WHERE 1=1 ORDER BY t1.id  DESC)

    在子句中加入limit 有效。

    然后还一种方式是

    select * from (SELECT * FROM t1 WHERE 1=1 ORDER BY t1.id DESC) t2
    UNION
    select * from (SELECT * FROM t1 WHERE 1=1 ORDER BY t1.id  DESC) t3        这样,注意子查询后记录要起别名 t2、t3

    还有union 和union All区别。

    union 会去重,即两个查询的结果集会过滤重复行。 union All不会。所以union All 比union效率高。

    传送门:

    https://www.cnblogs.com/pcheng/p/5939646.html

    说的很详细了,覆盖各种坑

    下班记得打卡
  • 相关阅读:
    hack games
    Metasploit 使用简介
    Back Track5学习笔记
    Metasploit没有db_autopwn命令的解决办法
    BT5 set_config各个选项的配置
    c# 截屏
    c#图像计算知识
    游戏代码
    Google Protocol Buffers (一个客户端与服务器协议生成工具)
    WinPcap抓取数据包
  • 原文地址:https://www.cnblogs.com/onlyzhangmeng/p/13618586.html
Copyright © 2011-2022 走看看