首页 > 编程知识 正文

oracle中update的用法,sql union all用法

时间:2023-05-04 11:36:27 阅读:143895 作者:3258

union的作用是合并两个sql的结果集

语法: SQL1 UNION SQL2

现有价目表

要求:寻求比2000便宜的商品和比3000贵的商品。 or和not between……不能使用and

想法:首先寻求不足2000的商品,可以得到结果集1

进而寻求超过3000种商品,得到结果集2

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

什么时候允许使用union?

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

第一个结果集有两列,第二个结果集有一列,运行后系统会提示列数不同。

列数相同,但字段类型不同。 例如,goods_name是一种字符类型,goods_id是一种格式,但同样可以是union。 值得注意的是,union后字段的名称基于第一个SQL

关于union排序

您可以看到内层排序不起作用。 那么,现在试着在外层排序吧

可以看到外部排序是起作用的

那内层排序没用吗?其实换个角度来看,内层先排序,外层又被排序,显然内层排序看起来很多余,所以MYSQL为了使内层排序不起作用,对SQL语句进行了优化。 内层排序要发挥作用,内层排序的结果就必须影响最终的结果。 例如在:中添加limit

这样内层排序就可以发挥作用了

如果有两次重复的行会怎么样?

再制作两个表,

表a

表b

表a和表b有两个相同的记录‘王五’、‘小高’

现在用union看看结果吧

因为《王五》和《小高》只有一个记录,所以另一个记录被涵盖了。 请使用union all以避免被覆盖

如图所示,“王五”和“小高”没有被覆盖

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。