当前位置: 代码迷 >> SQL >> SQL写一个临时表,往更新这个表里的字段
  详细解决方案

SQL写一个临时表,往更新这个表里的字段

热度:56   发布时间:2016-05-05 13:21:06.0
SQL写一个临时表,去更新这个表里的字段
create table temp_should_display_brand
as
select distinct b.x_brand_id,i.imgname,s.store_id
from x_brand b,x_brand_st_img i,x_brand_store s
where b.x_brand_id = i.x_brand_id and b.x_brand_id = s.x_brand_id
and i.store_id = s.store_id and i.imgname is not null
and( b.cnname is not null or b.othername is not null);

update x_brand_store s set s.dispalyflg = 1 where s.x_brand_id in(select x_brand_id from temp_should_display_brand);
commit;
drop table temp_should_display_brand;

CREATE TABLE X_TEMP_X_ATTR AS
    (select  a.store_id,a.catentry_id, to_char(a.attr_id) as attr_id, max(to_char(a.attrval_id)) as attrval_id,
count(*) as count from x_catentryattr_store a ,attrval b,attr c where a.attrval_id=b.attrval_id and a.attr_id=c.attr_id and c.attrusage is null
group by a.catentry_id, a.attr_id, a.store_id
having count(* ) > 1)

delete from x_catentryattr_store xc
where xc.store_id||xc.catentry_id||xc.attr_id||
xc.attrval_id in
       (select a.store_id||
               a.catentry_id||
               to_char(a.attr_id)||
               to_char(a.attrval_id)
          from x_catentryattr_store a, X_TEMP_ATTR b
         where a.store_id = b.store_id
           and a.catentry_id = b.catentry_id
           and a.attr_id = b.attr_id
           and a.attrval_id != b.attrval_id)


DELETE FROM x_catentryattr_store where store_id||
               catentry_id||
               attr_id = any(
SELECT ID from ( select row_number() over(partition by  a.store_id,
               a.catentry_id,
               a.attr_id order by 
               a.attrval_id DESC) cno,to_char(a.attrval_id) AS ID,a.store_id||
               a.catentry_id||
               a.attr_id as key1 from x_catentryattr_store a
             
  ) te where te.cno > 1)
  相关解决方案