javajohn

金色年华

ORACLE门事件

/*  Formatted on 2008/05/31 12:29 (Formatter Plus v4.8.8)  */
MERGE 
INTO  copy_emp a
   USING employees b
   
ON  (b.employee_id  =  a.employee_id)
   
WHEN  MATCHED  THEN
      
UPDATE
         
SET  a.employee_id  =  b.employee_id, a.first_name  =  b.first_name,
             a.last_name 
=  b.last_name, a.email  =  b.email,
             a.phone_number 
=  b.phone_number, a.hire_date  =  b.hire_date,
             a.job_id 
=  b.job_id, a.salary  =  b.salary,
             a.commission_pct 
=  b.commission_pct, a.manager_id  =  b.manager_id,
             a.department_id 
=  b.department_id
   
WHEN   NOT  MATCHED  THEN
      
INSERT
      
VALUES  (b.employee_id, b.first_name, b.last_name, b.email,
              b.phone_number, b.hire_date, b.job_id, b.salary,
              b.commission_pct, b.manager_id, b.department_id);

 

故事就这样发生了:
1 .删除重复记录
查出重复记录
SQL
>   select  rowid,bm,mc  from  a  where  a.rowid != ( select   max (rowid)  from  a b  where  a.bm = b.bm  and  a.mc = b.mc);
删除重复记录
SQL
>   delete   from  a a  where  a.rowid != ( select   max (rowid)  from  a b  where  a.bm = b.bm  and  a.mc = b.mc);
查找重复记录2: select   column   from   table   group   by  clolumn  having   count ( * ) > 1

关于 FROM a,b 和 a LEFT JOIN b 的区别

给个通俗的解释吧. 
例表a 
aid adate 
1  a1 
2  a2 
3  a3 
表b 
bid bdate 
1  b1 
2  b2 
4  b4 
两个表a,b相连接,要取出id相同的字段 
select 
*  from a ,b where a.aid  =  b.bid这是仅取出匹配的数据. 
此时的取出的是: 
1  a1 b1 
2  a2 b2 
那么left join 指: 
select 
*  from a left join b on a.aid  =  b.bid 
首先取出a表中所有数据,然后再加上与a,b匹配的的数据 
此时的取出的是: 
1  a1 b1 
2  a2 b2 
3  a3 空字符 
同样的也有right join 
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据 
此时的取出的是: 
1  a1 b1 
2  a2 b2 
4  空字符 b4

left outer join=left join

获取所有子节点
SELECT r_org.*, dor.dealer_id
  
FROM (SELECT connect_by_root org_id AS root_org_id,
               connect_by_root org_code 
AS root_org_code,
               connect_by_root org_name 
AS root_org_name,
               org_id,
               org_code,
               org_name
          
FROM tm_org
         START 
WITH org_code LIKE 'NSC%'
        CONNECT 
BY PRIOR org_id = parent_org_id) r_org,
       tm_dealer_org_relation dor
 
WHERE r_org.org_id = dor.org_id
sybase数据库分页sql:
============================
set   rowcount   3 (当前记录数 = 当前页码 * 每页显示条数)
select  id  into  #lishi_operation  from  operation a  order   by  a.id  asc
set   rowcount   5 (每页显示条数)
select   *   from  operation a  where  a.id  not   in ( select  id  from  #lishi_operation)  order   by  a.id  asc
set   rowcount   0
drop   table  #lishi_operation

posted on 2008-05-09 15:58 javajohn 阅读(245) 评论(0)  编辑  收藏 所属分类: 数据库


只有注册用户登录后才能发表评论。


网站导航:
 

My Links

Blog Stats

常用链接

留言簿(7)

随笔分类(36)

随笔档案(39)

classmate

good blog

企业管理网站

好友

站点收藏

搜索

最新评论

阅读排行榜

评论排行榜