zoukankan      html  css  js  c++  java
  • mysql---union的使用方法

    union的作用非常easy用来合并两条sql的结果集

    语法: SQL1 UNION SQL2

    现有一张价格表

    要求:求出价格低于2000和价格高于3000的商品。不能用or和not between……and

    思路:我们能够先求出低于2000的商品得到结果集1

    再求出高于3000的商品得到结果集2

    再利用union合并结果集1和结果集2



    什么时候才同意使用union?

    答:仅仅要两个结果集的列数同样就能够使用,即使字段类型不同样,也能够使用。


    第一个结果集有2列,第二个结果集有1列。执行后提示列数不一样的提示。



    列数相同,但字段类型不同。如goods_name是字符类型而goods_id是整形,但相同能够union。值得注意的是union后字段的名称以第一条SQL为准


    关于union的排序


    可见内层排序没有发生作用,那如今试试在外层排序


    可见外层排序发生了作用

    那是不是内层排序就没实用了呢。事实上换个角度想想内层先排序,外层又排序,明显内层排序显得多余。所以MYSQL优化了SQL语句,不让内层排序起作用。要想内层排序起作用,必需要使内层排序的结果能影响终于的结果。

    如:加上limit


    这样内层排序就起作用了


    若两次有反复的行出现会如何?

    再创建2个表,

    表A

    表B


    表A和表B中有两条同样的记录‘王五’,‘小高’

    如今使用union看一下结果


    能够看到‘王五’和‘小高’仅仅有一条记录,所以还有一条记录被覆盖了,要想不被覆盖能够使用union all


    如图所看到的,‘王五’和‘小高’没有被覆盖

  • 相关阅读:
    Android之TabHost实现Tab切换
    银联支付SDK集成
    iOS 支付 [支付宝、银联、微信]
    MySQL数据库数据类型以及INT(M)的含义
    cherrypy
    使用PyMySQL操作mysql数据库
    面向新手的Web服务器搭建(一)——IIS的搭建
    SQLite3中自增主键相关知识总结,清零的方法、INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用
    FMDB-FMDatabaseQueue
    SQLite 数据类型
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7029172.html