union和union all组合查询的时候会报错

在做mysql的题目的时候遇到了一个问题:union或者union all组合查询的时候,如果相对多个查询中的个别查询进行过滤,是不是需要将该查询包装成为子查询的形式,才能够正常执行,否则会报错?

一般使用union或者union all报错是因为连接的两部分查询字段不对应导致的,在确认语法没有问题的基础上再看有没有其他的问题

跟数据库有关系
有的版本数据库允许子查询里排序
有的要求只能对最终结果一次性排序,中间结果不可以排序
如果是后者,你写成子查询也没用,order by只能写在最后,只要中间出现了就会报错

可以看下union 跟union all 的区别 一个要去重排序 一个不需要 用在一起肯定报错的啊

  • 你可以参考下这篇文章:union与union all(联合查询)
  • 同时,你还可以查看手册:c语言-union 中的内容
  • 除此之外, 这篇博客: union与union all(联合查询)中的 使用注意: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1)union 和 union all都可以将多个结果集合并,而不仅仅是两个,你可以将多个结果集串起来。
    2)使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列的类型是一样的。但列名则不一定需要相同,oracle会将第一个结果的列名作为结果集的列名。
    3)没有必要在每一个select结果集中使用order by子句来进行排序,我们可以在最后使用一条order by来对整个结果进行排序。

    欢迎各位同志补充、指正~