锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. 数据库
  4. SQL常用语法( WITH 语句)

SQL常用语法( WITH 语句)

0
  • 数据库
  • 发布于 2024-08-13
  • 0 次阅读
黄健
黄健

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

在这里插入代码片—

个人笔记: 努力奋斗 - Li 亚 Q

文章目录

  • 1.WITH 语法
    • 1.1 创建临时表
    • 1.2 用 WITH 语句递归查询
    • 1.3 在 WITH 语句中使用多个查询

个人笔记: 努力奋斗 - Li 亚 Q

1.WITH 语法

WITH 语句是一种在 SQL 中常用的语法,用于创建临时表或视图,以便在后续的查询中使用。它可以简化复杂查询的编写,并提高查询性能。以下是一些 WITH 语句的示例:

1.1 创建临时表

WITH temp_table AS (
    SELECT column1, column2
    FROM some_table
    WHERE column3 = 'value'
)

SELECT *
FROM temp_table

这个 WITH 语句创建了一个名为 temp_table 的临时表,其中包含符合条件 column3 = 'value’的 some_table 表中的 column1 和 column2 列。在后续的查询中,可以使用 temp_table 来引用这些数据。

1.2 用 WITH 语句递归查询

WITH recursive_query AS (
    SELECT start_id, end_id, distance
    FROM some_table
    WHERE start_id = 1
    UNION ALL
    SELECT r.start_id, t.end_id, r.distance + t.distance
    FROM recursive_query r
    JOIN some_table t ON r.end_id = t.start_id
)
SELECT *
FROM recursive_query

这个 WITH 语句使用递归查询来查找从 start_id = 1 开始的所有路径,并计算它们的距离。在第一部分中,查询从 some_table 表中选择所有起点为 1 的路径。在第二部分中,使用 UNION ALL 操作符来将递归查询的结果与 some_table 表中的记录连接起来,以查找从起点到终点的路径,并计算它们的距离。这样,可以使用 WITH 语句来创建一个递归查询,从而简化代码。

1.3 在 WITH 语句中使用多个查询

WITH temp_table1 AS (
    SELECT column1, column2
    FROM some_table
    WHERE column3 = 'value'
), temp_table2 AS (
    SELECT column4, column5
    FROM another_table
    WHERE column6 = 'value'
)
SELECT *
FROM temp_table1
JOIN temp_table2 ON temp_table1.column1 = temp_table2.column4

这个 WITH 语句使用多个查询来创建两个临时表 temp_table1 和 temp_table2。在后续的查询中,使用这些临时表来连接 some_table 和 another_table 表,以查找符合条件的记录。这样,可以使用 WITH 语句来简化多个查询的编写,并提高查询性能。

用例

WITH w1 AS (
select name, value from diction where code = 's_model'
), w2 AS (
select name,value from diction where code = 'd_model'
), w3 AS (
select project_name,id from project
)
select w3.project_name, t1.device_name, t1.device_sn, t1.update_time,t1.device_model,t1.device_type from device t1
left join project_device pd on t1.id = pd.device_id
join w3 on w3.id = pd.project_id
where t1.device_type in (1,2);

获取 t1.device_type 为 1,t1.device_mode 与 w1 的 value 相等获取 w1 的 name 值该如何编写 sql

WITH w1 AS (
    SELECT name, value FROM diction WHERE code = 's_model'
)
SELECT w1.name, t1.device_type, t1.device_model
FROM device t1
JOIN w1 ON t1.device_model = w1.value
WHERE t1.device_type = 1;

获取 t1.device_type 为 1 且 t1.device_model 与 w1 的 value 相等的记录, t1.device_type 为 2 且 t1.device_model 与 w2 的 value 相等的记录,

WITH 
    w1 AS (
        SELECT name, value FROM diction WHERE code = 's_model'
    ),
    w2 AS (
        SELECT name, value FROM diction WHERE code = 'd_model'
    )
SELECT w1.name, t1.device_type, t1.device_model
FROM device t1
JOIN w1 ON t1.device_model = w1.value
WHERE t1.device_type = 1
UNION
SELECT w2.name, t1.device_type, t1.device_model
FROM device t1
JOIN w2 ON t1.device_model = w2.value
WHERE t1.device_type = 2;

个人笔记: 努力奋斗 - Li 亚 Q

标签: #数据库 67
相关文章

深入理解MySQL InnoDB中的B+索引机制 2024-09-30 14:41

目录 一、InnoDB中的B+ 树索引介绍 二、聚簇索引 (一)使用记录主键值的大小进行排序

mysql中B+树的数据存储 2024-09-29 16:36

B+树索引基础分析 B+树 的定义 B+树是一种自平衡的树形数据结构,常用于数据库和操作系统的索引结构。它具有以下特点: 所有数据都存储在叶子节点,非叶子节点仅存储键值和子节点的指针。 叶子节点之间通过指针相互连接,形成一个有序链表,便于范围查询。 每个节点可以拥有多个键值,键值之间是有序的。 B+

MySQl索引事务(B树) 2024-09-29 16:36

目标: 索引 事务 1.索引 1.1概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。 1.2作用 数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。 索引所起的作用类似书籍

MySQL数据库的备份与恢复 2024-09-26 17:57

MySQL数据库的备份与恢复 在现代信息时代,数据已成为企业和个人的重要资产,数据的安全性和可恢复性直接影响到业务的连续性和稳定性。MySQL作为广泛使用的关系型数据库管理系统,其数据的备份与恢复显得尤为重要。本文将详细探讨MySQL数据库的备份与恢复策略,包括备份的重要性、备份类型、常用备份方法及

MySQL中创建数据库和表 2024-09-26 17:57

在MySQL中创建数据库和表是数据库管理的基础步骤,它们构成了数据存储和操作的基础结构。下面,我将详细介绍如何在MySQL中创建数据库和表,包括创建数据库的基本语法、设计表的考虑因素、表的创建过程、数据类型和约束的使用等,力求内容详尽且不少于2000字。 一、创建数据库 在MySQL中,数据库是一个

MySQL数据库主从搭建(详细图文) 2024-09-28 15:11

MySQL数据库主从搭建(详细图文) 前言 主从原理: MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以"事件"的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.