您现在的位置是:主页 > news > 公司网站建设记哪个科目/seo排名
公司网站建设记哪个科目/seo排名
admin2025/4/27 3:17:09【news】
简介公司网站建设记哪个科目,seo排名,视频网站 php源码,聊城做网站的公司咨询网上找的一个例子,介绍递归01.论坛首页 02.--数据库开发 03.----DB2 04.------DB2 文章1 05.--------DB2 文章1 的评论1 06.--------DB2 文章1 的评论2 07.------DB2 文章2 08.----Oracle 09.--Java技术 以上是一个论坛的典型例子,下面我们新建…
公司网站建设记哪个科目,seo排名,视频网站 php源码,聊城做网站的公司咨询网上找的一个例子,介绍递归01.论坛首页 02.--数据库开发 03.----DB2 04.------DB2 文章1 05.--------DB2 文章1 的评论1 06.--------DB2 文章1 的评论2 07.------DB2 文章2 08.----Oracle 09.--Java技术 以上是一个论坛的典型例子,下面我们新建…
网上找的一个例子,介绍递归
01.论坛首页
02.--数据库开发
03.----DB2
04.------DB2 文章1
05.--------DB2 文章1 的评论1
06.--------DB2 文章1 的评论2
07.------DB2 文章2
08.----Oracle
09.--Java技术
以上是一个论坛的典型例子,下面我们新建一个表来存储以上信息。
--建表
drop table BBS;
CREATE TABLE BBS
(
PARENTID INTEGER NOT NULL,
ID INTEGER NOT NULL,
NAME VARCHAR(200) NOT NULL---板块、文章、评论等。
);
--插入数据
insert into bbs (PARENTID,ID,NAME) values
(0,0,'论坛首页'),
(0,1,'数据库开发'),
(1,11,'DB2'),
(11,111,'DB2 文章1'),
(111,1111,'DB2 文章1 的评论1'),
(111,1112,'DB2 文章1 的评论2'),
(11,112,'DB2 文章2'),
(1,12,'Oracle'),
(0,2,'Java技术');
假设现在让你查询一下‘DB2 文章1’的所有评论,有人说,这还不简单,如下:
SELECT * FROM BBS WHERE PARENTID=(SELECT ID FROM BBS WHERE NAME='DB2 文章1');
答案完全正确。
那么,现在让你查询一下DB2的所有文章及评论,怎么办?
传统的方法就很难查询了,这时候递归查询就派上用场了,如下:
WITH TEMP(PARENTID,ID,NAME) AS
(
SELECT PARENTID,ID,NAME FROM BBS WHERE NAME='DB2' ---语句1
UNION ALL ---语句2
SELECT B.PARENTID,B.ID,B.NAME FROM BBS AS B, TEMP AS T WHERE B.PARENTID=T.ID ---语句3
)
SELECT NAME FROM TEMP; ---语句4
WITH 子句内的第一个 SELECT 语句是初始化表。它只执行一次。它的结果形成虚拟表的初始内容以作为递归的种子。在上面的示例中,种子是 'NAME' 为 DB2的一行或多行。
第二个 SELECT 语句执行多次。将种子作为输入传递给第二个 SELECT 语句以产生下一个行集合。将结果添加(UNION ALL)到虚拟表的当前内容中,并放回到其中以形成用于下一次传递的输入。只要有行产生,这个过程就会继续。
运行后,我们发现,结果完全正确,那它到底是怎么运行的呢?下面我们详细讲解一下。
1、首先,语句1将会执行,它只执行一次,作为循环的起点。得到结果集:DB2
2、接着,将循环执行语句3,这里我们有必要详细介绍一下。
首先语句3的意图是什么呢?说白了,它就是查找语句1产生结果集(DB2)的下一级,那么在目录树中DB2的下一级是什么呢?是‘DB2 文章1’和‘DB2 文章2’