Mysql,使用 UNION ALL 处理 ‘无中生有‘ 的数据。

这篇具有很好参考价值的文章主要介绍了Mysql,使用 UNION ALL 处理 ‘无中生有‘ 的数据。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

   

       在日常的开发工作中,有时我们需要在SQL层面添加一些数据库表中没有的数据,那么我们就可以使用 UNION ALL 关键字来解决。

 文章来源地址https://www.toymoban.com/news/detail-523764.html

一、简单的无中生有:在查询返回结果中添加数据

       以下方的SQL1为例,我们根据 id 查询 user 表中的数据,但想将 name = "燕双鹰"、age = 70 的数据也添加上,使用 UNION ALL 完美的解决了这个问题。

SQL1

-- SQL1, 在查询结果中添加表中不存在的数据.
SELECT
 u.`name`,
 u.age
 
FROM user u
WHERE
 u.id = 4
UNION ALL
SELECT
 '燕双鹰' AS name,
 70 AS age
FROM DUAL
;

Mysql,使用 UNION ALL 处理 ‘无中生有‘ 的数据。,数据库,MySql,ETL数据处理,mysql,数据库

图一 

二、复制的无中生有:根据逻辑判断,追加不同的值.

    需求:这里有一个 name 模板,name值为:张三、李四、赵六, 当 user 表中含这些数据时,返回 name值 及对应的 age 值;如果表中不含 name 值,则也需要返回 name值 并将 age 值设为 0 。

     这个需求依旧可以使用 UNION ALL 来解决。这个需求看起来很无厘头,但现实的工作中总有各种奇葩的需求,身为程序员的我们也是挺无奈的!!!

    SQL2

SELECT
 CASE WHEN u.`name` = '张三' THEN u.`name` ELSE '张三' 
 END AS name,
 CASE WHEN u.`name` = '张三' THEN u.age ELSE 0 
 END AS age
 
FROM user u
WHERE
 u.id = 5
UNION ALL 
SELECT
 CASE WHEN u.`name` = '李四' THEN u.`name` ELSE '李四' 
 END AS name,
 CASE WHEN u.`name` = '李四' THEN u.age ELSE 0 
 END AS age
 
FROM user u
WHERE
 u.id = 4
UNION ALL
SELECT
 CASE WHEN u.`name` = '赵六' THEN u.`name` ELSE '赵六' 
 END AS name,
 CASE WHEN u.`name` = '赵六' THEN u.age ELSE 0 
 END AS age
 
FROM user u
WHERE
 u.id = 6
;

Mysql,使用 UNION ALL 处理 ‘无中生有‘ 的数据。,数据库,MySql,ETL数据处理,mysql,数据库

 

到了这里,关于Mysql,使用 UNION ALL 处理 ‘无中生有‘ 的数据。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串&UNION与OR的使用注意事项

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2024年02月21日
    浏览(33)
  • Hive SQL,使用UNION ALL 纵向合并表,当字段为空值时报错

    使用UNION ALL纵向合并表,当字段为空值时报错如下: SQL 错误 [40000] [42000]: Error while compiling statement: FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: The column KEY._col1:0._col0 is not in the vectorization context column map {KEY._col0=0, KEY._col1=1}. 说明:客户端用的 DBeaver 尝试了各种方

    2024年02月03日
    浏览(25)
  • [SQL] union all

    UNION ALL 是一个用于合并多个查询结果集的操作符。它将多个 SELECT 查询的结果合并成一个结果集,并且保留所有的行,包括重复的行。 具体语法如下: 在上述语法中,UNION ALL 用于合并来自 table1 和 table2 的查询结果集。 这两个查询 必须拥有相同的列数和相似类型的列 。 U

    2024年02月07日
    浏览(30)
  • ORACLE中UNION、UNION ALL、MINUS、INTERSECT学习

    1、UNION和UNION ALL的使用与区别 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all。union的作用是将多个结果合并在一起显示出来。 union和union all的区别是union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部

    2024年02月12日
    浏览(32)
  • GaussDB数据库SQL系列-UNION & UNION ALL

    目录 一、前言 二、GaussDB  UNION/UNION ALL 1、GaussDB UNION 操作符 2、语法定义 三、GaussDB实验示例 1、创建实验表 2、合并且除重(UNION) 3、合并不除重(UNION ALL) 4、合并带有WHERE子句SQL结果集(UNION ALL) 5、业务逻辑除重后合并(UNION ALL) 四、GaussDB UNION常见错误 1、“each UNION que

    2024年02月12日
    浏览(28)
  • union all简写xml

    2024年02月13日
    浏览(27)
  • [SQL挖掘机] - 多表连接: union all

    sql中的 union all 是用于合并两个或多个select语句的结果集的操作符。与 union 不同的是, union all 不会自动去除重复的行,它会简单地将多个查询的结果集合并在一起,包括重复的行。 union all 的基本语法如下: 其中, select_statement1 和 select_statement2 是两个或多个select语句,它们

    2024年02月15日
    浏览(26)
  • Full Join多个表与Union All多个表

    在Hive中(其他类似SQL,比如PostgreSQL可能也存在此问题),当对多张表(3张及以上)进行full join时,会存在每张表的主键都是唯一,但当full join后,会发现主键可能有重复。 2.1. 插入数据 2.2. 查询SQL以及问题 当执行如上查询SQL时,会发现其中 id = 4 的数据有重复,如下图所示

    2024年02月16日
    浏览(34)
  • thinkphp 5 实现UNION ALL 3个联表查询,并且带上搜索条件,名称,时间,手机号

    在ThinkPHP 5中实现带有搜索条件、名称、时间和手机号的3个联表查询(UNION ALL),您可以按照以下步骤进行操作: 确保已经配置好数据库连接信息和相关的模型。 使用 union() 方法来构建3个联表查询,同时在每个查询中添加所需的搜索条件、名称、时间和手机号。 在上述代码

    2024年02月12日
    浏览(29)
  • 【SQL开发实战技巧】系列(二十六):数仓报表场景☞聊聊ROLLUP、UNION ALL是如何分别做分组合计的以及如何识别哪些行是做汇总的结果行

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2023年04月12日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包