随笔分类 -  SQL

摘要:今天看了篇帖子,被几个地方转载,但是性能不太好,因为不能评论,所以把优化思路写在这里。1.确定需求: 根据部门来分组,显示各员工在部门里按薪水排名名次.2.来创建实例数据:drop table if exists heyf_t10;create table heyf_t10 (empid int ,deptid int ,salary decimal(10,2) );insert into heyf_t10 values(1,10,5500.00),(2,10,4500.00),(3,20,1900.00),(4,20,4800.00),(5,40,6500.00),(6,40,14500.0 阅读全文
posted @ 2012-08-29 18:00 xxd 阅读(10951) 评论(1) 推荐(0) 编辑
摘要:在这里看到了一个帖子http://www.iteye.com/topic/1122917,很简单,凑下热闹,因为Oracle,SQLServer的子查询和Join算法的选择很多,但是MySQL方面就没有那么多的选择了,所以很多子查询的性能都很差,这里分析几个帖子里MySQL的答案。需求:使用SQL语句查出哪些人即会玩basketball又会玩badminton,找出这样的name-hobby组合create table test (NAME varchar(20) not null, HOBBY varchar(20) not null);insert into test values( 阅读全文
posted @ 2012-08-27 15:27 xxd 阅读(1223) 评论(0) 推荐(0) 编辑
摘要:通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值select nvl(sum(t.dwxhl),1) from tb_jhde t where zydm=-1这里关心的nvl的用法,nvl(arg,value)代表如果前面的arg的值为null那么返回的值为后面的value另一个有关的有用方法declare i intenerselect nvl(sum(t.dwxhl),1) into i from tb_jhde t where zydm=-1这样就可以把获得的合计值存储到变量i中,如果查询的值为null就把它的值设置为默认的1 阅读全文
posted @ 2010-02-15 20:48 xxd 阅读(2099) 评论(0) 推荐(0) 编辑
摘要:create table myTestTable asselect rownum as id,to_char(sysdate + rownum/24/3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime,trunc(dbms_random.value(0, 100)) as random_id,dbms_random.string('x', 20) random_stringfrom dualconnect by level <= 100000;上面SQL是利用了Oracle数据库语法的几个实用小技巧实现的:1、利用 阅读全文
posted @ 2010-01-25 17:43 xxd 阅读(1709) 评论(0) 推荐(0) 编辑
摘要:比如一个字符串的存储为 qa,we,er,rt 我们要取这个字符串中的qa ,使用一个函数即可达到目的:select substring_index('qa,we,er,rt',',',1); 阅读全文
posted @ 2009-10-09 16:54 xxd 阅读(352) 评论(0) 推荐(0) 编辑
摘要:1. Top n + group by <http://topic.csdn.net/u/20091013/11/077e5e03-24d2-4aa2-9771-4034f2c66084.html>数据库里边有表t(time, loction, index)数据形式为2009-01-01 01:00:00 1 102009-01-01 01:00:00 2 32009-01-01 01:00:00 3 12009-01-01 01:00:00 4 1012009-01-01 01:00:00 5 1022009-01-02 01:00:00 1 32009-01-02 01:00: 阅读全文
posted @ 2008-12-26 16:32 xxd 阅读(989) 评论(0) 推荐(0) 编辑