设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 6713|回复: 16
打印 上一主题 下一主题

[模块/函数] 出一个查询题目让大家练练(自定义排序)。

[复制链接]
跳转到指定楼层
1#
发表于 2006-5-13 18:40:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-5-13 18:52:00 | 只看该作者

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编辑过]

3#
 楼主| 发表于 2006-5-13 18:56:00 | 只看该作者
用联合查询虽然结果正确,但并非最优解。

谢谢版主。
4#
发表于 2006-5-13 19:36:00 | 只看该作者
以下是引用wuaza在2006-5-13 10:56:00的发言:


用联合查询虽然结果正确,但并非最优解。

谢谢版主。



纯属抛砖引玉,期待更好的方法。
5#
发表于 2006-5-13 19:50:00 | 只看该作者
以下是引用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)))
6#
 楼主| 发表于 2006-5-13 20:11:00 | 只看该作者
in (...) 括号里的id不多的话,楼上答案算一个。(不知道iif最多嵌套几层?但超过四层的话用起来总是不爽)

越来越接近我的答案了。不知道我自认为的“正确”答案算不算最好。

说实话,这个题目我也是从别人那里学来的。让我自己也想不出来。[em01]
7#
发表于 2006-5-13 20:13:00 | 只看该作者

SELECT * FROM 表1
WHERE id In (13,5,9,3)
ORDER BY InStr(",13,5,9,3,","," & id & ",");

[此贴子已经被作者于2006-5-13 12:14:47编辑过]

8#
 楼主| 发表于 2006-5-13 20:23:00 | 只看该作者
高手就是高手,不得不佩服!

本题正确答案已有LucasLynn版主给出,竞答圆满结束。
9#
发表于 2006-5-13 22:53:00 | 只看该作者
hao dong si
10#
发表于 2006-5-13 22:53:00 | 只看该作者
fei chang hao a
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-30 14:27 , Processed in 0.114520 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表