现在有一个表a,我想对其进行查询,并且查询条件中where后面的条件有2种情况,具体用语句说吧:
第一个查询语句为:
select top 10 * from a where tj='10' order by newid() 
第二个查询语句为:
select top 10 * from a where tj='11' order by newid() 
我想将这两个语句执行后分别得到的结果都存入同一个临时表,应该如何写存储过程?
或者是否可以将这两个语句进行整合,形成一次查询,得到这2个不同条件的所有数据并写入临时表呢?
对这方面不是特别了解,求助!
先谢了!

解决方案 »

  1.   


    select * into #tmp
    from (
    select top 10 * from a where tj='10' order by newid() union all select top 10 * from a where tj='11' order by newid()) t 
      

  2.   

    似乎不对,提示“如果语句中包含union语句,那么order by子句中的项就必须出现在选择列表中”
      

  3.   

    已经搞定了,语句确实有问题。
    sql2000里用到union和ordey by中的newid时,需要将newid放到前面,然后,跟上随机数。
    SELECT * FROM (SELECT TOP 2 *, NewId() As RandomX FROM [Article] Where ArticleId < 100 Order By RandomX) A
    UNION ALL
    SELECT * FROM (SELECT TOP 8 *, NewId() As RandomX FROM [Article] Where ArticleId > 200 Order By RandomX) B这样就好了。谢谢你们!