比如我写一个查询
SELECT * 
FROM tbAbc a 
INNER JOIN tbDef b 
ON a.flDefId = b.flId 
INNER JOIN tbGhi c 
ON b.flGhiId = c.flId 
INNER JOIN tbJkl d 
ON c.flJklId = d.flId 
INNER JOIN tbMno e 
ON d.flMnoId = e.flId 
这样一个查询可以查出把五个表字段全部连接在一行里
但是我希望把查出来的五个表的数据分拆成记录集中的多个表
我已经知道可以这样做......
SELECT a.* 
FROM tbAbc a 
INNER JOIN tbDef b 
ON a.flDefId = b.flId 
INNER JOIN tbGhi c 
ON b.flGhiId = c.flId 
INNER JOIN tbJkl d 
ON c.flJklId = d.flId 
INNER JOIN tbMno e 
ON d.flMnoId = e.flId 
SELECT b.* 
FROM tbAbc a 
INNER JOIN tbDef b 
ON a.flDefId = b.flId 
INNER JOIN tbGhi c 
ON b.flGhiId = c.flId 
INNER JOIN tbJkl d 
ON c.flJklId = d.flId 
INNER JOIN tbMno e 
ON d.flMnoId = e.flId 
SELECT c.*
......(以下省略 600+ 字)
这样可以保证连接查询出来的数据可以分拆成多个表
但这样写太繁,而且是查好几遍,有没有一次查出,用什么关键字就能把它拆成多个表的?

解决方案 »

  1.   

    SELECT  * into #Tab
    FROM    tbAbc a
            INNER JOIN tbDef b ON a.flDefId = b.flId
            INNER JOIN tbGhi c ON b.flGhiId = c.flId
            INNER JOIN tbJkl d ON c.flJklId = d.flId
            INNER JOIN tbMno e ON d.flMnoId = e.flId  SELECT  [A1],[A2]..... from tab
    SELECT  [B1],[B2]..... from tab
    SELECT  [C1],[C2]..... from tab
    SELECT  [D1],[D2]..... from tab
    SELECT  [F1],[F2]..... from tabDROP TABLE #Tab
      

  2.   

    这样不行的,
    消息 2705,级别 16,状态 3,第 1 行
    各表中的列名必须唯一。在表 '#Tab' 中多次指定了列名 'flId'。
      

  3.   

    即使我把每个表里的字段全改得不一样,要把每个字段名都在 SELECT 时写出来太麻烦
    一个表中的字段数可能会有几十到上百个,而且很难避免和其他表的字段重复
    因为我需要把所有字段取出来,为程序的实体类初始化,所以肯定不能用 AS 改字段名