SELECT * FROM tb_name WHERE Id IN (SELECT TOP N Id FROM tb_name WHERE Id LIKE '01%') OR Id IN (SELECT TOP M Id FROM tb_name WHERE Id LIKE '02%') OR Id IN (SELECT TOP 20-M-N Id FROM tb_name WHERE Id LIKE '03%')

解决方案 »

  1.   

    晕了,你那个N+M+L==20是什么意思啊,你要确定查询多少条应该定了吧
      

  2.   

    首先 好像有点不太符合逻辑约束条件还不够N+M+L==20  那么 N M L 怎么分配?这样的话有无数种组合
      

  3.   

    SELECT * FROM tb_name WHERE Id IN (SELECT TOP N Id FROM tb_name WHERE Id LIKE '01%') OR Id IN (SELECT TOP M Id FROM tb_name WHERE Id LIKE '02%') OR Id IN (SELECT TOP 20-M-N Id FROM tb_name WHERE Id LIKE '03%') and (M+N+L=20)
      

  4.   

    忘了多个条件了,不好意思呀。
    这个是要随机搜起来。就是说一共搜索出来20条记录,这20条记录是随机的,不是用Top的。如果分不足可以再加!!!!
      

  5.   

    SELECT * FROM tb_name WHERE Id IN (SELECT TOP N Id FROM tb_name WHERE Id LIKE '01%') OR Id IN (SELECT TOP M Id FROM tb_name WHERE Id LIKE '02%') OR Id IN (SELECT TOP 20-M-N Id FROM tb_name WHERE Id LIKE '03%') and (M+N+L=20)
      

  6.   

    SELECT * FROM tb_name WHERE Id IN (SELECT TOP N Id FROM tb_name WHERE Id LIKE '01%') OR Id IN (SELECT TOP M Id FROM tb_name WHERE Id LIKE '02%') OR Id IN (SELECT TOP 20-M-N Id FROM tb_name WHERE Id LIKE '03%') and (M+N+L=20)这一条不用执行估计应该不会错!
    我是想他在数据库中随机查询!不用要Top N或Top M这样的,有没有可能?
      

  7.   

    实在不行就不要一个sql语句写嘛,干嘛非要钻牛角尖。
      

  8.   

    建议在sqlserver版问,那里人写sql比较牛
      

  9.   

    select top 20 * from tab where Id  like '01%' or  Id  like '02%'or Id  like '03%'
      

  10.   

    SELECT * FROM tb_name t
    where (t.id like '01%'
    or t.id like '02%'
    or t.id like '03%')
    and rownum<=20用oracle的rownum可以很容易实现,sqlserver能不能用没试过
      

  11.   

    我觉得这个只用一条sql来实现比较困难,
    可以先用相应的语言写一个小算法,
    生成随机数,
    然后再用一条语句读出需要结果来查询
      

  12.   

    不好意思,没有看清楚三种情况必须要有
    这样的话还使用随机数指定三个的id范围,再查比较保险。
    否则就算不指定top什么的,也不能保证每次取出来的都不一样