第一個查詢?yōu)槎c成員油航,定點成員只是一個返回有效表的查詢备闲,用于遞歸的基礎(chǔ)或定位點
第二個查詢被稱為遞歸成員陈哑,使該查詢成為遞歸成員的是對遞歸引用時觸發(fā)(遞歸表.id與該表的pid
遞歸查詢沒有顯式的遞歸終止條件傍念,只有當(dāng)?shù)诙€遞歸查詢返回空結(jié)果
with as在mysql不支持围辙,在with as在SqlServer和anroid客戶端都可以使用的
union all吉捶,解釋為聯(lián)合所有夺鲜。
Union解釋為聯(lián)合。
union或者Union all實現(xiàn)把前后兩個select集合的數(shù)據(jù)聯(lián)合起來呐舔,組成一個結(jié)果集查詢輸出币励。這就要求聯(lián)合前后的結(jié)果集,需要分別有相同的輸出字段的數(shù)目珊拼,并且對應(yīng)的字段類型要相同食呻。
SELECT column1, column2 from table1 union (all) select column1, column2 from table2
以上語句要求量表的column1字段類型相同,column2類型相同澎现。而且每個查詢的數(shù)目都是一樣的仅胞。UNION ALL和UNION的差別就在ALL上面,第一個叫聯(lián)合所有剑辫,說明會顯示前后兩個查詢所有的數(shù)據(jù)干旧,而UNION沒有ALL(所有)這個單詞,實現(xiàn)將前后兩個查詢的數(shù)據(jù)聯(lián)合到一起后妹蔽,去掉重復(fù)的數(shù)據(jù)顯示
創(chuàng)建表和初始數(shù)據(jù)的sql
CREATE TABLE [aaa](
[id] [int] NULL,
[pid] [int] NULL,
[name] [nchar](10)
)
INSERT INTO aaa VALUES(1,0,'a')
INSERT INTO aaa VALUES(2,0,'b')
INSERT INTO aaa VALUES(3,1,'c')
INSERT INTO aaa VALUES(4,1,'d')
INSERT INTO aaa VALUES(5,2,'e')
INSERT INTO aaa VALUES(6,3,'f')
INSERT INTO aaa VALUES(7,3,'g')
INSERT INTO aaa VALUES(8,4,'h')
with my1 as(select * from aaa where id = 8
union all select aaa.* from my1, aaa where my1.pid = aaa.id
?? ? )
?? select * from my1;