Office中国论坛/Access中国论坛
标题: 出一个查询题目让大家练练(自定义排序)。 [打印本页]
作者: wuaza 时间: 2006-5-13 18:40
标题: 出一个查询题目让大家练练(自定义排序)。
SELECT * FROM table WHERE id in (13,5,9,3)
以上查询语句,如何让结果按照WHERE ID in(...) ←括号里的顺序进行排序?
即出来的查询集按id值13,5,9,3的顺序排序。
题目要求:
1、不能通过辅助表、临时表。
2、一条语句完成。
答案将于5月15日公布!
[此贴子已经被一点通于2006-5-13 19:52:40编辑过]
作者: LucasLynn 时间: 2006-5-13 18:52
SELECT 1,* FROM table1 WHERE id =3
UNION SELECT 2,* FROM table1 WHERE id =5
UNION SELECT 3,* FROM table1 WHERE id =9
UNION SELECT 4,* FROM table1 WHERE id =1;
[此贴子已经被作者于2006-5-13 10:52:50编辑过]
作者: wuaza 时间: 2006-5-13 18:56
用联合查询虽然结果正确,但并非最优解。
谢谢版主。
作者: LucasLynn 时间: 2006-5-13 19:36
以下是引用wuaza在2006-5-13 10:56:00的发言:
用联合查询虽然结果正确,但并非最优解。
谢谢版主。
纯属抛砖引玉,期待更好的方法。
作者: eyewitnes 时间: 2006-5-13 19:50
以下是引用wuaza在2006-5-13 10:40:00的发言:
SELECT * FROM table WHERE id in (13,5,9,3)
以上查询语句,如何让结果按照WHERE ID in(...) ←括号里的顺序进行排序?
即出来的查询集按id值13,5,9,3的顺序排序。
题目要求:
1、不能通过辅助表、临时表。
2、一条语句完成。
答案将于5月15日公布!
不知道你的id in (...) 括号里面有多少,所以不一定适合
select * from table where id in (13,5,9,3) order by iif(id=13,1,iif(id=5,2,iif(id=9,3,4)))
作者: wuaza 时间: 2006-5-13 20:11
in (...) 括号里的id不多的话,楼上答案算一个。(不知道iif最多嵌套几层?但超过四层的话用起来总是不爽)
越来越接近我的答案了。不知道我自认为的“正确”答案算不算最好。
说实话,这个题目我也是从别人那里学来的。让我自己也想不出来。[em01]
作者: LucasLynn 时间: 2006-5-13 20:13
SELECT * FROM 表1
WHERE id In (13,5,9,3)
ORDER BY InStr(",13,5,9,3,","," & id & ",");
[此贴子已经被作者于2006-5-13 12:14:47编辑过]
作者: wuaza 时间: 2006-5-13 20:23
高手就是高手,不得不佩服!
本题正确答案已有LucasLynn版主给出,竞答圆满结束。
作者: dog3894 时间: 2006-5-13 22:53
hao dong si
作者: dog3894 时间: 2006-5-13 22:53
fei chang hao a
作者: dog3894 时间: 2006-5-13 22:53
mei shen mie hao shguo le
作者: eyewitnes 时间: 2006-5-13 23:30
原来instr可以这样用,学了一招
作者: LucasLynn 时间: 2006-5-14 00:23
以下是引用wuaza在2006-5-13 12:23:00的发言:
高手就是高手,不得不佩服!
本题正确答案已有LucasLynn版主给出,竞答圆满结束。
确实很有启发性,我自己也是想了半天,以后遇到类似问题就知道怎么解决了。
作者: andymark 时间: 2006-5-14 00:33
学习...
作者: 一点通 时间: 2006-5-14 03:55
这样的自定义排序确实有用途
作者: qlm 时间: 2006-9-6 03:49
要先懂这个才能看懂答案:
InStr 函数
返回 Variant (Long) 值,该值指定一个字符串在另一个字符串中第一次出现时的位置。
语法
InStr([start, ]string1, string2[, compare])
InStr 函数语法具有以下参数:
作者: chaojianan 时间: 2009-4-19 16:34
真是高手。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |