12
返回列表 发新帖
楼主: oldwain

欣赏一个奇妙的sql.

[复制链接]
论坛徽章:
46
奥运会纪念徽章:现代五项
日期:2008-10-24 13:26:49奥运会纪念徽章:摔跤
日期:2012-07-23 15:26:57复活蛋
日期:2012-11-19 11:58:05灰彻蛋
日期:2012-12-06 14:47:452013年新春福章
日期:2013-02-25 14:51:24保时捷
日期:2013-08-26 09:19:31奔驰
日期:2013-10-08 15:46:342014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有对象
日期:2014-04-02 10:53:11
11#
发表于 2001-10-12 15:27 | 只看该作者
真是让人糊涂的代码
其实就是吧a和b得值对调了一下,
真是佩服,为了少定义一个变量,竟然用到这样的办法,佩服啊
这书什么地方有,真想找来看看

使用道具 举报

回复
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
12#
发表于 2001-10-12 15:30 | 只看该作者
有趣的SQL,复杂的C语句,绕得我头都晕了。不过最后一段的功能好像是将A赋值为0。

使用道具 举报

回复
论坛徽章:
27
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:18
13#
 楼主| 发表于 2001-10-12 15:36 | 只看该作者
windff说得对, 这个方法确实比使用一个临时变量的效率要高!!!

想看更多的occc, 可以到http://www.ioccc.org/

有兴趣的话, 还可以去参加比赛(奖金情况我可不了解)

使用道具 举报

回复
论坛徽章:
46
奥运会纪念徽章:现代五项
日期:2008-10-24 13:26:49奥运会纪念徽章:摔跤
日期:2012-07-23 15:26:57复活蛋
日期:2012-11-19 11:58:05灰彻蛋
日期:2012-12-06 14:47:452013年新春福章
日期:2013-02-25 14:51:24保时捷
日期:2013-08-26 09:19:31奔驰
日期:2013-10-08 15:46:342014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有对象
日期:2014-04-02 10:53:11
14#
发表于 2001-10-12 15:43 | 只看该作者
谢谢oldwain,这样的问题有趣,能体验到乐趣,不象现在给客户开发的时候大多数时候是搬砖,一点乐趣都没有

使用道具 举报

回复
招聘 : HTML页面制作
论坛徽章:
74
喜羊羊
日期:2015-04-29 17:32:03夏利
日期:2013-11-30 17:08:44雪佛兰
日期:2013-09-02 10:24:402013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2012-11-26 22:08:56ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32双黄蛋
日期:2012-05-17 22:25:44版主3段
日期:2012-05-15 15:24:11茶鸡蛋
日期:2012-04-06 17:43:25茶鸡蛋
日期:2012-03-26 21:29:09
15#
发表于 2001-10-12 16:34 | 只看该作者

不明白

select * from emp
where empno in ( select empno
from (select empno
from emp
order by dbms_random.random )
where rownum <= 3 )

1. dbms_random.random 返回一个随机数,那么order by dbms_random.random 应该相当于 order by '20'?
2. 若 select empno from emp order by '20' 的话,order by 启不是不起作用?
3.那么此SQL启不是永远返回前三条记录?

是不是这应该样写

select * from emp
where empno in ( select empno
from (select empno,dbms_random.random aa
from emp
order by aa)
where rownum <= 3 )

使用道具 举报

回复
论坛徽章:
27
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:18
16#
 楼主| 发表于 2001-10-12 16:47 | 只看该作者
两个语句应该是等价的.
注意:
1. 如果select empno from emp order by 20, 会出错(20 不是一个有效的列号),
    但select empno from emp order by '20' 没有问题 (把'20'当作一个常量计算列)

2. order by dbms_random.random 应该相当于 order by '20' ?
不!
dbms_random.random 并不是只计算一次, 而是针对每一行计算一个, 所以得到的是一个变动的计算列, 而不是常量计算列.

做一下试验, 能够好的理解这之间的差异.

使用道具 举报

回复
论坛徽章:
0
17#
发表于 2001-11-20 19:32 | 只看该作者
这段C程序有味道啊,想起大学时好多同学都津津乐道于此的。

程序原来也可以编得像首诗呵。

  你站在桥上看风景,
  看风景的人在楼上看你。
  明月装饰了你的窗子,
  你装饰了别人的梦。
       ——卞之琳

最初由 oldwain 发布
[B]呵呵, 这与个人的水平无关.

要是很容易看懂, 就不能称为"Obfuscated "了.

下面是Obfuscated c 的入门程序片断, 要求在最快的时间(比如说10秒之内)内说出它的功能:
[PHP]
{
   a = a + b;
   b = a - b;
   a = a - b;
}
[/PHP] [/B]

使用道具 举报

回复
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
18#
发表于 2001-11-20 20:18 | 只看该作者
Add this topic to our E-magazine ?
It is very very very very funny, very very very exciting !!!
Thanks All

使用道具 举报

回复
论坛徽章:
27
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:18
19#
 楼主| 发表于 2001-11-20 20:40 | 只看该作者
呵呵, 把这篇帖子又给翻出来了?

我也很希望能做一些类似的小趣文放到e-mag里面.
可惜, 没有找到这方面的资源.
有没有人能提供一些有趣味sql(类似我上面提到的occc)的站点?

使用道具 举报

回复
论坛徽章:
4
20#
发表于 2008-4-16 22:54 | 只看该作者
呵呵。学习。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表