SQL SERVER中递归

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

--建表语句
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'MENU_INFO') DROP TABLE MENU_INFO;
CREATE TABLE MENU_INFO(
MENU_ID INT IDENTITY(1,1) NOT NULL,
MENU_NAME VARCHAR(100) NOT NULL,
PARETN_ID INT NULL,
CONSTRAINT MENU_INFO_PK1 PRIMARY KEY(MENU_ID),
CONSTRAINT MENU_INFO_AK1 UNIQUE(MENU_NAME)
);
--插入数据
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级菜单',NULL);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-1',1);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-2',1);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-3',1);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-1-三级菜单-1',2);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-1-三级菜单-2',2);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-1-三级菜单-3',2);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-2-三级菜单-1',3);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-2-三级菜单-2',3);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-2-三级菜单-3',3);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-3-三级菜单-1',4);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-3-三级菜单-2',4);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-3-三级菜单-3',4);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-3-三级菜单-1-四级菜单-1',11);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-3-三级菜单-1-四级菜单-2',11);
INSERT INTO MENU_INFO (MENU_NAME,PARETN_ID) VALUES('一级-二级菜单-3-三级菜单-1-四级菜单-3',11);
--查询
WITH CON(MENU_ID,MENU_NAME,PARETN_ID,[LEVEL]) AS
(
SELECT MENU_ID,MENU_NAME,PARETN_ID,[LEVEL] = 1 FROM MENU_INFO WHERE MENU_ID = 4
UNION ALL
SELECT A.MENU_ID,A.MENU_NAME,A.PARETN_ID, [LEVEL] = [LEVEL]+ 1 FROM MENU_INFO A JOIN CON ON A.PARETN_ID = CON.MENU_ID
)
SELECT MENU_ID,MENU_NAME,PARETN_ID,[LEVEL] FROM CON文章来源地址https://www.toymoban.com/news/detail-617486.html

到了这里,关于SQL SERVER中递归的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • (SQL学习随笔3)SQL语法——SELECT语句

    FROM LIMIT与OFFSET ORDER BY 单值比较 = 等于 不等于 、 = 小于、小于等于 、 = 大于、大于等于 多条件组合 范围筛选 空值匹配 LIKE通配 主要有两种通配符—— \\\'%\\\' 与 \\\'_\\\' ,其中 \\\'%\\\' 代表任意多个字符, \\\'_\\\' 代表单个任意字符 条件分组 数据变换 文本处理 MySQL PostgreSQL 在PostgreS

    2023年04月27日
    浏览(42)
  • [SQL挖掘机] - SELECT语句

    当我们处理数据库时, 经常需要从表中获取特定的数据. 为了实现这个目的, 我们使用一种称为\\\"select\\\"的语句. 简单来说, select语句就像一个过滤器或者选择器, 帮助我们选择 (select) 想要的数据. 通过编写select语句并执行查询操作, 我们可以按照我们的需求从数据库中提取特定的数

    2024年02月15日
    浏览(53)
  • MySQL中,SQL 查询总是先执行SELECT语句吗?

    在使用 MySQL 进行查询时,我们通常会使用 SELECT 语句,但是 SELECT 语句是否总是最先被执行呢?这是一个非常有趣的问题,本文将对此进行探讨。 在 MySQL 中,SQL 查询通常包括以下几个步骤: 语法解析 :MySQL 会对 SQL 查询语句进行语法解析,检查语句是否符合 SQL 语法规范。

    2023年04月09日
    浏览(52)
  • SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解

    SELECT INTO 语句将数据从一个表复制到一个新表中。 新表将按照在旧表中定义的列名和类型创建。您可以使用 AS 子句创建新的列名。 以下 SQL 语句创建 Customers 的备份副本: 以下 SQL 语句使用 IN 子句将表复制到另一个数据库中的新表中: 以下 SQL 语句仅复制一些列到新表中:

    2024年02月05日
    浏览(119)
  • MySQL 参考文档:SQL 语句优化(SELECT 语句优化)之索引条件下推(索引下推)优化

    索引下推优化官方文档说明 (Section 8.2.1.5):https://dev.mysql.com/doc/refman/5.7/en/index-condition-pushdown-optimization.html 1. 什么是索引下推? qquad 索引条件下推 (Index Condition Pushdown,ICP) 是 MySQL 在使用索引从表中检索行时的一种优化方法。在没有 ICP 的情况下,存储引擎遍历索引以定位基

    2024年02月16日
    浏览(43)
  • Mybatis注解开发@Select执行参数和执行sql语句的方式

    执行传参 @Select 是 Mybatis 框架中的一个注解,用于执行 SQL 查询语句,并把查询结果映射到指定的 Java 对象中。 具体来说,@Select 注解会将注解中的 SQL 查询语句交给 Mybatis 框架进行解析和执行。在解析过程中,Mybatis 会通过 #{} 占位符获取查询语句中的参数,并将这些参数传

    2024年02月16日
    浏览(39)
  • 解决thinkphp6读取sqlserver报Microsoft[SQL Server]对象名 ‘information_schema.tables‘ 无效错误

    先感谢思路 https://weiku.co/article/37/ 需要修改thinkphp里面sqlserver数据库驱动,不要去改composer里面的东西。所以只能自己重写驱动,并且在database.php配置文件中,显示指定builder和type参数来完成非侵入式的修改。 2个核心文件代码 FunSqlsrv.php FunSqlsrv.php 参考 https://weiku.co/article/37/

    2024年02月11日
    浏览(46)
  • SQL SERVER中递归

    --建表语句 IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = \\\'MENU_INFO\\\') DROP TABLE MENU_INFO; CREATE TABLE MENU_INFO( MENU_ID INT IDENTITY(1,1) NOT NULL, MENU_NAME VARCHAR(100) NOT NULL, PARETN_ID INT NULL, CONSTRAINT MENU_INFO_PK1 PRIMARY KEY(MENU_ID), CONSTRAINT MENU_INFO_AK1 UNIQUE(MENU_NAME) ); --插入数据 INSERT INT

    2024年02月15日
    浏览(28)
  • 【Hive-SQL】Hive Select 选择语句排除一列或多列

    查看 除了sample_date 以外的所有字段信息 查看 除了sample_date 和 msgtype 以外的所有字段信息 上面的 set hive.support.quoted.identifiers=none; 可以替换操作: 在 \\\'hive-site.xml\\\' 中添加以下配置: hive.support.quoted.identifiers=none

    2024年02月10日
    浏览(42)
  • 在mybatis-plus项目中自带要编写sql语句,@select注解的使用

    提示:在mybatisplus中编写sql语句有两种方法,我重点使用@select注释这种方法,还有一种是增加mapper.xml文件配置,这里不做讲解 现在mybatis-plus中已经封装了绝大部分简单sql,只用一部分负责sql需要自行编写,所以用@select的方式可以减少开发量,减少项目的复杂性。 @select是myb

    2023年04月12日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包