表A:字段A1,A2,A3A1:为ID自增长,A2为父ID,A3栏目名称
A1 A2 A3
5 2 一
6 3 二
7 4 三
8 5 四现在要一个SQL查出来如下结果像第4条结果集这样,就是后面都加一列显示付栏目的名字。A1 A2 A3 父栏目名字
8 5 四 一在线等,解决马上给分,谢谢!
A1 A2 A3
5 2 一
6 3 二
7 4 三
8 5 四现在要一个SQL查出来如下结果像第4条结果集这样,就是后面都加一列显示付栏目的名字。A1 A2 A3 父栏目名字
8 5 四 一在线等,解决马上给分,谢谢!
CREATE TABLE TABLE3
( A1 INT ,
A2 INT,
A3 VARCHAR(100)
)
INSERT INTO TABLE3
SELECT 5, 2, '一' UNION
SELECT 6, 3, '二' UNION
SELECT 7, 4, '三' UNION
SELECT 8, 5, '四'SELECT T1.A1,T1.A2,T1.A3,T2.A3
FROM Table3 as T1 LEFT OUTER JOIN Table3 AS T2 ON T1.A2 = T2.A1
就是A3字段啊A1 A2 A3 父栏目名字
8 5 四 一
select a.a1,a.a2,a.a3,b.a3 as 父栏目名称 from 表A a left join (select * from 表A) b on a.a2=b.a1
IF OBJECT_id('tb') IS NOT NULL DROP TABLE dbo.TB
CREATE TABLE tb
( A1 INT ,
A2 INT,
A3 VARCHAR(100)
)
INSERT INTO tb
SELECT 5, 2, '一' UNION
SELECT 6, 3, '二' UNION
SELECT 7, 4, '三' UNION
SELECT 8, 5, '四'SELECT A1 ,A2=A1 FROM dbo.TB
SELECT * FROM tb;WITH cte AS
(
SELECT A1 ,A2=A1,A3 FROM dbo.TB
UNION ALL
SELECT t.A1,A2=c.A2,c.A3 FROM tb AS t INNER JOIN cte AS c ON t.A2=c.A1
)SELECT A1,A2,
[路径]=STUFF((SELECT ','+A3 FROM cte WHERE A1= tb.A1 FOR XML PATH('')),1,1,'')
FROM tb
GROUP BY A1,A3,A2
/*A1 A2 路径
----------- ----------- --------------
5 2 一
6 3 二
7 4 三
8 5 四,一(4 行受影响)*/
CREATE TABLE TabName
(A1 INT,A2 INT,A3 VARCHAR(20))INSERT INTO TabName
SELECT 5, 2, '一' UNION ALL
SELECT 6, 3, '二' UNION ALL
SELECT 7, 4, '三' UNION ALL
SELECT 8, 5, '四'SELECT t.A1, t.A2, t.A3,isnull(t2.A3,'无父栏目') AS '父栏目名字' FROM TabName t
LEFT JOIN TabName t2
ON t.A2=t2.A1--结果
A1 A2 A3 父栏目名字
----------- ----------- -------------------- --------------------
5 2 一 无父栏目
6 3 二 无父栏目
7 4 三 无父栏目
8 5 四 一
FROM dbo.TABLE3 INNER JOIN
dbo.TABLE3 TABLE3_1 ON dbo.TABLE3.A2 = TABLE3_1.A1