SQL插入資料 資料中的某一列來自本表中的資料

2022-02-11 09:08:41 字數 1178 閱讀 5644

背景:

專案初期使用的配置庫和業務庫兩種資料庫並行,所有配置資料位於配置庫,所有業務資料根據不同省份位於不同資料庫。由於使用省份越來越多,各省的配置資料也越來越多導致配置庫的資料量過於龐大,各省共用乙個配置庫資料,僅依靠省份編碼去區分,查詢乙個簡單配置資料需要耗費200ms。因此專案組提出配置庫分離方案,將原有配置庫資料拆分到各個省業務庫中,由於**中大部分會根據省份編碼判斷,因此業務庫中的碼表依舊需要省份編碼字段。針對全網需求,如果涉及到配置資料,這樣就需要提供31個省的資料指令碼,這31個省的資料指令碼可能僅僅只有省份編碼不一樣,這樣的指令碼會存在兩個問題:

1.指令碼編寫難度較大,耗費大量人力物力

2.指令碼執行難度較大,dba 需要在31個省來回切資料庫,執行對應指令碼

解決方案:

將31個省資料指令碼編寫為乙個,所有指令碼都一樣,關於指令碼中省份編碼的資料根據庫中資料來填充。

insert

into tab select prov_code,'

固定值1

','固定值2

','固定值3

'from tab where ...

eg:表student

create

table

`student` (

`s_id`

int(10) unsigned not

null auto_increment comment '

prk'

, `s_name`

varchar(32) default

null comment '

學生姓名',

primary

key(`s_id`)

) engine

=innodb auto_increment=

10default charset=utf8

表資料:

現在要求插入幾條資料,要求名字是從表中讀取

insert

into student select

11,s_name from student where s_id =

8;

這裡的 where 語句僅僅是為了限制查出來的結果這個可以根據實際情況編寫。

mysql將一列資料累加 MySql某一列累計查詢

問題 有一列資料,需要累計顯示出來 比如 id salary 查詢結果 id salary sumsalary 1 10000 1 10000 10000 2 20000 2 20000 30000 3 30000 3 30000 60000 解決方案 1 使用自定義變數 用 set 定義變數 my...

sql 給表某一列的全部資料追加相同的資料

testsql 表 age 列名 column limit 1 追加的資料 ps oracle中 1 給testsql表的所有記錄的age欄位裡面追加 limit 1內容 update testsql set age concat age,limit 1 2 將剛才追加內容刪除 update tes...

shell取出多列檔案中某一列重複的資料

檔案內容的格式是 1 張三 2 李四 3 張三 第二列有重複資料,去重的指令碼如下 bin bash sort t t k2 file.txt awk f t else if 2 value target.txt sort t t k1 target.txt result.txt rm target...