zoukankan      html  css  js  c++  java
  • mysql中的union和order by、limit

     

    我有一个表

    CREATE TABLE `test1` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(20) NOT NULL,
      `desc` varchar(100) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    (1)以下查询会报错误:[Err] 1221 - Incorrect usage of UNION and ORDER BY

    select * from test1 where name like 'A%' order by name
    union
    select * from test1 where name like 'B%' order by name

    应改为:

    select * from test1 where name like 'A%'
    union
    select * from test1 where name like 'B%' order by name

    因为union中,在不用括号的情况下,只能用一个order by(想一想,如果union两边的order by的列名不一样会怎么样),这会对union后的结果集进行排序

    或者改为:

    (select * from test1 where name like 'A%' order by name)
    union
    (select * from test1 where name like 'B%' order by name)

    这两个order by在union前进行

    (2)同样的

    select * from test1 where name like 'A%' limit 10
    union
    select * from test1 where name like 'B%' limit 20

    相当于

    (select * from test1 where name like 'A%' limit 10)
    union
    (select * from test1 where name like 'B%') limit 20

    即后一个limit作用于的是union后的结果集,而不是union后的select

    也可以加括号来得到你想要的结果

    (select * from test1 where name like 'A%' limit 10)
    union
    (select * from test1 where name like 'B%' limit 20)

  • 相关阅读:
    商城项目开发(一)
    java基础
    SpringBoot笔记
    设计模式-创建型模式
    讲真的 曾惜
    Linux常用精简命令实训练习
    使用ZeroClipboard.js复制内容到剪贴板上
    浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式
    jQuery mouseover与mouseenter,mouseout与mouseleave的区别
    div中的img垂直居中
  • 原文地址:https://www.cnblogs.com/lxwphp/p/8329372.html
Copyright © 2011-2022 走看看