首页 > 其他分享 >巧妙构建查询数据一例

巧妙构建查询数据一例

时间:2023-07-24 21:05:06浏览次数:39  
标签:AREA UNION 一例 战车 巧妙 查询 DUAL t1 SELECT

经常在数据库完成各类查询需要相当多的数据,或先建表再查询,对于基于查询验证时非常麻烦,这里介绍可以无需建立表就能直接用sql构造数据且查询的方法

SELECT
    t1.AREA,
    t1.USE,
    t2.name AS DATA_TYPE,
    COALESCE(t1.PROG_NUM, 0) AS PROG_NUM
FROM
    (
        -- 第一个数据表
        SELECT '地区1' AS AREA, '战车' AS USE, '步战车' AS DATA_TYPE, 10 AS PROG_NUM FROM DUAL
        UNION ALL
        SELECT '地区1', '战车', '水战车', 10 FROM DUAL
        UNION ALL
        SELECT '地区1', '战车', '土战车', 20 FROM DUAL
        UNION ALL
        SELECT '地区2', '战车', '步战车', 10 FROM DUAL
        UNION ALL
        SELECT '地区2', '战车', '水战车', 10 FROM DUAL
        UNION ALL
        SELECT '地区3', '战车', '步战车', 9 FROM DUAL
    ) t1
CROSS JOIN
    (
        -- 第二个数据表(name)
        SELECT '步战车' AS name FROM DUAL
        UNION ALL
        SELECT '水战车' FROM DUAL
        UNION ALL
        SELECT '土战车' FROM DUAL
    ) t2
LEFT JOIN
    (
        -- 第一个数据表,仅用于补充缺失的地区和战车类型
        SELECT '地区1' AS AREA, '战车' AS USE, '步战车' AS DATA_TYPE, 0 AS PROG_NUM FROM DUAL
        UNION ALL
        SELECT '地区1', '战车', '水战车', 0 FROM DUAL
        UNION ALL
        SELECT '地区1', '战车', '土战车', 0 FROM DUAL
        UNION ALL
        SELECT '地区2', '战车', '步战车', 0 FROM DUAL
        UNION ALL
        SELECT '地区2', '战车', '水战车', 0 FROM DUAL
        UNION ALL
        SELECT '地区2', '战车', '土战车', 0 FROM DUAL
        UNION ALL
        SELECT '地区3', '战车', '步战车', 0 FROM DUAL
    ) t3
ON t1.AREA = t3.AREA AND t1.DATA_TYPE = t3.DATA_TYPE
ORDER BY t1.AREA, t1.USE, t2.name;

在这个查询中,首先我们使用 CROSS JOIN 来将第一个数据表和第二个数据表中的所有记录进行组合。然后,使用 LEFT JOIN 将组合后的结果与一个仅用于补充缺失数据的表连接,补充缺失的地区和战车类型,并将 PROG_NUM 设置为 0。最后,使用 COALESCE 函数来将 PROG_NUM 为 NULL 的记录填充为 0,并按照 AREA、USE 和 DATA_TYPE 进行排序。请注意,这里的数据来源使用了 DUAL 表作为演示,实际应用中需要根据实际情况替换为相应的表名。

这样直接通过SQL就能直接构造数据,且在一个查询中完成构造数据和查询数据。

标签:AREA,UNION,一例,战车,巧妙,查询,DUAL,t1,SELECT
From: https://blog.51cto.com/u_14316134/6839304

相关文章

  • hbase中查询命令 hbase怎么查询
    Hbase表结构  1.进入Hbaseshell>./bin/hbaseshell2.查看当前操作用户>whoami3.创建一个表//表名列族1列族2>create'Rumenz','user','userInfo'4.查看数据库的表>list5.添加数据//表名rowkey列族:字段名值>put'Rumenz......
  • MongoDB 教程二: 添加, 删除,查询 shell命令
       MongoDBShell常用操作命令MonoDB shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的。 Ø数据库//1、Help查看命令提示helpdb.help();db.yourColl.help();db.youColl.find().help();rs.help();//2、切换/创建......
  • jpa中枚举类型保存和查询
    1,存储枚举字段时,保存在数据库中的值默认情况使用枚举类型的ordinal值,该值是枚举值定义顺序,从0,1,2。。。依次类推@Enumerated(EnumType.ORDINAL)privateSignUpStatusstatus;使用枚举值名称@Enumerated(EnumType.STRING)privateSignUpStatusstatus;2,使用nativesql查询......
  • 怎么查询mysql数据库重启记录
    项目方案:查询MySQL数据库重启记录1.简介MySQL是一种常见的关系型数据库管理系统,它在运行过程中可能会出现各种问题,包括数据库重启。在开发和维护过程中,我们经常需要查询数据库重启的记录,以便进行故障排查和性能优化等工作。本项目方案将介绍如何查询MySQL数据库的重启记录,包括......
  • 怎样优雅地增删查改(九):按日期范围查询
    目录实现按开始日期查询按结束日期查询使用项目地址 使用数据库的创建时间作为查询依据,在Abp框架中,实体类实现ICreationAuditedObject接口,或继承CreationAuditedEntity类,使用仓储创建记录时将自动生成CreationTime。实现定义按创建日期范围查询(IDateSpanOriente......
  • android 查询文件夹里面文件名
    Android查询文件夹里面文件名作为一名经验丰富的开发者,我很高兴能够教会你如何在Android中查询文件夹里的文件名。下面我将向你展示整个流程,并给出每一步的具体代码和注释。流程概述首先,让我们来看一下整个过程的流程概述。我们将通过以下步骤实现查询文件夹内文件名的功能:......
  • CSS3媒体查询
    什么是媒体查询?媒体查询(MediaQuery)是CSS3新语法。使用@media查询,可以针对不同的媒体类型定义不同的样式@media可以针对不同的屏幕尺寸设置不同的样式当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面目前针对很多苹果手机、Android手机,平板等设备......
  • sql server 查询表大小
    SQLServer查询表大小的步骤在SQLServer中,查询表大小可以帮助我们了解数据库中各个表的大小,从而优化数据库性能和存储空间。下面是查询表大小的步骤,以及每一步需要做的事情和相应的代码。步骤一:连接到SQLServer数据库首先,我们需要连接到SQLServer数据库。可以使用SQLServer......
  • sql server 查询本月日期
    SQLServer查询本月日期在SQLServer中,要查询本月的日期,可以通过以下步骤实现:步骤描述1获取当前日期2提取当前年份3提取当前月份4构建查询条件5执行查询1.获取当前日期首先,我们需要获取当前日期。可以使用GETDATE()函数来获取当前日期和时间。......
  • 查询mysql 某个表下一个自增id
    查询MySQL某个表下一个自增ID作为一名经验丰富的开发者,你经常需要与数据库打交道。在MySQL中,自增ID是一种常见的使用方式,用于唯一标识每一条记录。当你需要查询某个表的下一个自增ID时,可以按照以下步骤进行操作。步骤概览下面是整个查询MySQL某个表下一个自增ID的流程概览:步......