把
拆分成下圖
一開始我的想法是創建個備份表,然后備份表update成50%,原表update成50%,再把備份表的資料復制到原表里
uj5u.com熱心網友回復:
先UPDATE 50%,然后再insert into 一次全表uj5u.com熱心網友回復:
CREATE TABLE test_t(ID,name,sal) AS
SELECT 1,'a',2000 FROM dual
UNION ALL SELECT 2,'b',3000 FROM dual
UNION ALL SELECT 3,'c',2500 FROM dual;
--SELECT * FROM test_t;
INSERT INTO test_t t1 SELECT * FROM test_t t2;
COMMIT;
UPDATE test_t SET sal=0.5*sal ;
COMMIT;
uj5u.com熱心網友回復:
with tb1 as(SELECT 1 fd1, 'a' fd2, 2000 fd3
FROM dual
UNION ALL
SELECT 2 fd1, 'b' fd2, 3000 fd3
FROM dual
UNION ALL
SELECT 3 fd1, 'c' fd2, 2500 fd3
FROM dual),
tb2 as
(select 2 fd1 from dual union all select 2 fd1 from dual)
select a.fd1, a.fd2, a.fd3 / b.fd1 from tb1 a, tb2 b
uj5u.com熱心網友回復:
--1.建表create table test_A
(
ID varchar(20) ,
name varchar(20),
sal int
);
--2.插入測驗資料
insert into test_A values('1','a',2000);
insert into test_A values('2','b',3000);
insert into test_A values('3','c',2500);
--3.按百分比加工,并在name欄位拼一個test
insert into test_A (select 'test'||ID ,name,sal*0.5 from test_A union all select 'test'||ID ,name,sal*0.5 from test_A)
--4.洗掉原來的資料
select * from test_A t where instr(t.name,'test')=0
--5.將name后面的test去掉
update test_A t set name=substr(t.name,5,length(t.name));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/104846.html
標籤:開發
上一篇:求幾個sql,謝謝!
