表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  四 一在线等,解决马上给分,谢谢!

解决方案 »

  1.   

     select a.A1,a.A2,a.A3,b.字段 from 表A inner join on a.a2=b.a2我想象了一个表B 父栏目名字 从那取值? 随便写? 
      

  2.   

    你只给了一个表A 里面只有父id 并没有付栏目名称 难道要把 a3的值 再取一遍放到新加的列里面?
      

  3.   


    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
      

  4.   


    就是A3字段啊A1 A2 A3 父栏目名字
    8 5 四 一
      

  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
      

  6.   


    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 行受影响)*/
      

  7.   


    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           四                    一
      

  8.   

    借用4楼的数据SELECT dbo.TABLE3.A1, dbo.TABLE3.A2, dbo.TABLE3.A3, TABLE3_1.A3 AS Expr1
    FROM dbo.TABLE3 INNER JOIN
          dbo.TABLE3 TABLE3_1 ON dbo.TABLE3.A2 = TABLE3_1.A1