SELECT TOP 5 * FROM(SELECT * FROM AA WHERE 1=1 and kind=0 AND type=1 OR type=0 and kind=0 UNION ALL SELECT * FROM AA WHERE 1=1 AND type=2 and kind=0) AS A ORDER BY NEWID()SELECT TOP 20 * FROM(SELECT * FROM AA WHERE 1=1 and kind=1 AND type=1 OR type=0 and kind=1 UNION ALL SELECT * FROM AA WHERE 1=1 AND type=2 and kind=1) AS A ORDER BY NEWID()SELECT TOP 5 * FROM(SELECT * FROM AA WHERE 1=1 and kind=2 AND type=1 OR type=0 and kind=2 UNION ALL SELECT * FROM AA WHERE 1=1 AND type=2 and kind=2) AS A ORDER BY NEWID()SELECT TOP 15 * FROM(SELECT * FROM AA WHERE 1=1 and kind=3 AND type=1 OR type=0 and kind=3 UNION ALL SELECT * FROM AA WHERE 1=1 AND type=2 and kind=3) AS A ORDER BY NEWID()SELECT TOP 5 * FROM(SELECT * FROM AA WHERE 1=1 and kind=4 AND type=1 OR type=0 and kind=4 UNION ALL SELECT * FROM AA WHERE 1=1 AND type=2 and kind=4) AS A ORDER BY NEWID()上面的sql语句是查询出来的多个表,要求,把它们合成一张大表,就是并起来,要怎么做呢?
谢谢

解决方案 »

  1.   

    用Union AllSELECT TOP 5 * FROM(SELECT * FROM AA WHERE 1=1 and kind=0 AND type=1 OR type=0 and kind=0 UNION ALL SELECT * FROM AA WHERE 1=1 AND type=2 and kind=0) AS A ORDER BY NEWID()Union AllSELECT TOP 20 * FROM(SELECT * FROM AA WHERE 1=1 and kind=1 AND type=1 OR type=0 and kind=1 UNION ALL SELECT * FROM AA WHERE 1=1 AND type=2 and kind=1) AS A ORDER BY NEWID()
    合并多次查询的结果
      

  2.   

    先套用子查询再UNION ALL因为 UNION的 ORDER BY 子句对结果集的合集有效,而不是针对于 UNION所要联合的某一条SELECT语句.