90分求一SQL语句,成功立刻结帖!
表有以下内容:
-----------------------------------
Id | name | Age |
-----------------------------------
02_1 | name1 | age1 |
-----------------------------------
01_1 | name1 | age1 |
-----------------------------------
...........共有N条
-----------------------------------
03_1 | name1 | age1 |
-----------------------------------
如何用一条Sql语句查出N条Id以01开头的,M条Id以02
开头的,L条Id以03开头的,而且N+M+L==20
一条能否写出,写出立刻结帖,只给一人!
问题点数:90、回复次数:22Top
1 楼simonxuluo(爱江山更爱美人)回复于 2005-04-04 01:22:26 得分 20
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%')Top
2 楼simonxuluo(爱江山更爱美人)回复于 2005-04-04 01:24:57 得分 5
晕了,你那个N+M+L==20是什么意思啊,你要确定查询多少条应该定了吧Top
3 楼telenths(_非法操作_)回复于 2005-04-04 07:32:44 得分 5
首先 好像有点不太符合逻辑
约束条件还不够
N+M+L==20 那么 N M L 怎么分配?
这样的话有无数种组合Top
4 楼yeshucheng(叶澍成★七哥)回复于 2005-04-04 08:38:29 得分 0
条件没有完全写全吧Top
5 楼talenty(残越)回复于 2005-04-04 09:23:12 得分 0
楼主是要做彩票程序么^o^Top
6 楼qiuzhong1983(老丘)回复于 2005-04-04 09:36:04 得分 0
条件不明确,建议去SQL区问Top
7 楼ipv(宁静致远)回复于 2005-04-04 11:55:30 得分 10
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
8 楼xiaohuozhi()回复于 2005-04-04 19:10:19 得分 0
M N L随机数,和==20!Top
9 楼xiaohuozhi()回复于 2005-04-04 19:11:43 得分 0
忘了多个条件了,不好意思呀。
这个是要随机搜起来。就是说一共搜索出来20条记录,这20条记录是随机的,不是用Top的。
如果分不足可以再加!!!!Top
10 楼jianghuxing(回头看看原来我一无所有)回复于 2005-04-04 19:16:11 得分 10
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
11 楼xiaohuozhi()回复于 2005-04-04 19:36:31 得分 0
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这样的,有没有可能?Top
12 楼runnerrunning(千寻失业ing&那是我所不能了解的事)回复于 2005-04-04 22:12:19 得分 0
having关键字应该可以Top
13 楼bestdelphier(菜鸟升级中......)回复于 2005-04-05 01:09:06 得分 10
实在不行就不要一个sql语句写嘛,干嘛非要钻牛角尖。Top
14 楼joincsdn(云)回复于 2005-04-05 08:15:15 得分 0
不是太明白楼主的随机是什么意思??既然是随机为什么不加一个列用随机数和ID作条件查询呢??Top
15 楼OnlyFor_love(『勾勾手指头 一辈子不分手』)回复于 2005-04-05 09:17:50 得分 0
顶一个Top
16 楼xiaohuozhi()回复于 2005-04-05 11:21:29 得分 0
做考试系统,随机查询数据库中的20条记录。
因为试题有三种类型。试题又比较多,所以想随机搜索,确认
三种试题都有抽到!Top
17 楼kingofall(超级菜鸟)回复于 2005-04-05 14:23:39 得分 0
建议在sqlserver版问,那里人写sql比较牛Top
18 楼martin628(笨就一个字)回复于 2005-04-06 15:00:36 得分 10
select top 20 * from tab where Id like '01%' or Id like '02%'or Id like '03%'Top
19 楼dakuntk(2008wo26)回复于 2005-04-06 15:28:47 得分 0
markTop
20 楼alley_zhan(晓柯)回复于 2005-04-07 13:44:43 得分 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能不能用没试过Top
21 楼wumingwangzi(将java进行到底)回复于 2005-04-07 13:59:10 得分 5
我觉得这个只用一条sql来实现比较困难,
可以先用相应的语言写一个小算法,
生成随机数,
然后再用一条语句读出需要结果来查询
Top
22 楼alley_zhan(晓柯)回复于 2005-04-07 14:00:41 得分 5
不好意思,没有看清楚三种情况必须要有
这样的话还使用随机数指定三个的id范围,再查比较保险。
否则就算不指定top什么的,也不能保证每次取出来的都不一样Top




