表結(jié)構(gòu)和數(shù)據(jù)
創(chuàng)新互聯(lián)公司是少有的成都網(wǎng)站制作、做網(wǎng)站、營(yíng)銷型企業(yè)網(wǎng)站、小程序開(kāi)發(fā)、手機(jī)APP,開(kāi)發(fā)、制作、設(shè)計(jì)、賣鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,從2013年成立,堅(jiān)持透明化,價(jià)格低,無(wú)套路經(jīng)營(yíng)理念。讓網(wǎng)頁(yè)驚喜每一位訪客多年來(lái)深受用戶好評(píng)
CREATE TABLE table1(id int, name varchar(10), parent_id int);
INSERT table1 VALUES
(1, ‘Home’, 0),
(2, ‘About’, 1),
(3, ‘Contact’, 1),
(4, ‘Legal’, 2),
(5, ‘Privacy’, 4),
(6, ‘Products’, 1),
(7, ‘Support’, 2);
查詢 id = 5 的所有父級(jí)
SELECT ID.level, DATA.* FROM(
SELECT
@id as _id,
( SELECT @id := parent_id
FROM table1
WHERE id = @id
) as _pid,
mysql遞歸查詢,mysql中從子類ID查詢所有父類(做無(wú)限分類經(jīng)常用到)
由于mysql 不支持類似 oracle with ...connect的 遞歸查詢語(yǔ)法
之前一直以為類似的查詢要么用存儲(chǔ)過(guò)程要么只能用程序?qū)戇f歸查詢.
現(xiàn)在發(fā)現(xiàn)原來(lái)一條sql語(yǔ)句也是可以搞定的
先來(lái)看數(shù)據(jù)表的結(jié)構(gòu)如下:
id name parent_id
---------------------------
1 Home 0
2 About 1
3 Contact 1
4 Legal 2
5 Privacy 4
6 Products 1
7 Support 1
我要的要求是根據(jù)一個(gè)分類ID(這個(gè)分類ID可能是一個(gè)子分類),得到所有的父分類,下面是相應(yīng)的SQL:
SELECT T2.id, T2.name
FROM (
SELECT
@r AS _id,
(SELECT @r := parent_id FROM table1 WHERE id = _id) AS parent_id,
@l := @l + 1 AS lvl
FROM
(SELECT @r := 5, @l := 0) vars,
table1 h
WHERE @r 0) T1
JOIN table1 T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC
代碼@r := 5標(biāo)示查詢id為5的所有父類。結(jié)果如下
1, ‘Home’
2, ‘About’
4, ‘Legal’
5, ‘Privacy’
自己仿照這看一下!
select SYS_CONNECT_BY_PATH(列名,'') from 表名
start wITh 列名='0000000001'
connect by prior 列名(孩子列所有的列名)=列名(父列所有的列名)
這個(gè)查出來(lái)的樣式如下:
000000000001000000000000
不知道是不是你想要的。