• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql-union的用法_mysql

mysql 搞代码 7年前 (2018-06-07) 153次浏览 已收录 0个评论

mysql—union的用法

union的作用很简单用来合并两条sql的结果集

语法: SQL1 UNION SQL2

现有一张价格表

mysql-union的用法_mysql

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

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

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

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

mysql-union的用法_mysql

什么时候才允许使用union?

答:只要两个结果集的列数相同就可以使用,即使字段类型不相同,也可以使用。

mysql-union的用法_mysql

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

mysql-union的用法_mysql

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


关于union的排序

mysql-union的用法_mysql

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

mysql-union的用法_mysql

可见外层排序发生了作用

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

mysql-union的用法_mysql

这样内层排序就起作用了


若两次有重复的行出现会怎样?

再创建2个表,

表A

mysql-union的用法_mysql

表B

mysql-union的用法_mysql

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

现在使用union看一下结果

mysql-union的用法_mysql

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

mysql-union的用法_mysql

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

欢迎大家阅读mysql-union的用法_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql-union的用法_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址