论坛首页 综合技术论坛

SQL 小技巧

浏览 34791 次
锁定老帖子 主题:SQL 小技巧
该帖已经被评为精华帖
作者 正文
   发表时间:2008-09-13  
出现一些很笨的sql写法往往是因为写sql的人对sql所知甚少,或者是在别人的基础上修改,图快修改而来。
多知道些sql知识,在条件允许的条件下多点责任心应该可以避免这类事情。
当然如果有dba,有些事情在自己只知道一些笨的解决方法的时候应该先咨询下。
0 请登录后投票
   发表时间:2008-09-16  
你不会是做财帮子、晨星、数米等相关网站的吧?
如果是,我们是同行。呵呵。
0 请登录后投票
   发表时间:2008-09-18  
太强悍了,对我触动很大,讨厌存储过程,可是我离不开存储过程!
0 请登录后投票
   发表时间:2008-09-19  
lintomny 写道
armorking 写道
对于oracle
第二个问题,

select 
      基金表.PK
    , count(decode(基金表.分数, 5, 1, 0)) as count_5
    , count(decode(基金表.分数, 4, 1, 0)) as count_4
    , count(decode(基金表.分数, 3, 1, 0)) as count_3
    , count(decode(基金表.分数, 5, 1, 4, 1, 3, 1, 0)) as count_543
from 基金表
group by 基金表.PK
having count_543 > 2

这里的having count_543 > 2可以这么写吗?
没听说查询出来的别名可以作having过滤项。至少Oracle9i下这是不行的。


的确,这是个笔误
0 请登录后投票
   发表时间:2008-09-23  
不存在符合条件的记录,也就是唯一边界的记录,对于ON 只能用等值连接,所以WHERE里补空件.
0 请登录后投票
   发表时间:2008-09-25  
脱离SQL就是脱离本质,   搞那么多虚的东西是没用的
碰上专业的数据仓库比如TERRADATA,你就是得老老实实用他的专用查询语句
搞技术的也不要太执着,见人说人话,见鬼说鬼话即可!   
0 请登录后投票
   发表时间:2008-09-26  
楼主举得例子有些极端,简单的SQL可以实现当然不用存储过程了。SQL语句和存储过程应该是没有矛盾的,我想大家遇到问题都是首先考虑使用SQL语句,如果SQL实现太复杂,会再考虑存储过程。特别是一些报表,字段来自很多表,并且需要复杂的计算。比如SQL语句包含6、7个表,左套一层右套一层,这样的语句让数据库来解析和执行很难想象会是什么样的结果,性能可想而知,编写难度也比较大,可读性当然也不会太好。在这种情况我觉得可以使用存储过程来代替一个复杂的SQL语句,把问题分散解决,对数据库,开发人员,维护人员都是个不错的选择。
0 请登录后投票
   发表时间:2008-10-04  
我想请教一下打分的标准是什么?
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics