随笔分类 - 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
阅读全文
摘要:在这里看到了一个帖子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(
阅读全文
摘要:通过查询获得某个字段的合计值,如果这个值位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
阅读全文
摘要: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、利用
阅读全文
摘要:比如一个字符串的存储为 qa,we,er,rt 我们要取这个字符串中的qa ,使用一个函数即可达到目的:select substring_index('qa,we,er,rt',',',1);
阅读全文
摘要: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:
阅读全文