kuroの覚え書き

96の個人的覚え書き

カラムの内容から一部を切り取って別のカラムをアップデート

まずカラムから文字列の一部分を切り出すには

select substr(name, 1, 4) from exome;

これでexomeというテーブルのnameというカラムから、先頭〜4文字目までを選び出すことになる。
選びだした文字列でidというカラムをアップデートするなら、

update exome set id = (select A.s_id from (select name, substr(name, 1, 4) as s_id from exome) as A where exome.name = A.name);

これでいけるはず。
さらにAxxxxxxとAで始まるところだけ7文字切り出してアップデートするなら

update exome set id = (select A.s_id from (select name, substr(name, 1, 7) as s_id from exome where name like "A%" ) as A where exome.name = A.name);

こんな感じか。

別テーブルの対応表に従ってテーブルをアップデートする。

tableA

A_id, B_id
A000001, B0001
A000002, B0002

tableB

Samplename, A_id, B_id
A000001:XYZ, A000001
A000002:ABC, A000002
B0001:MNL,  , B0001

こういうテーブル構成でtableBのB_idの空欄をtableAを参照してB_idで埋めたい。

update tableB set B_id = (select tableA.B_id from tableA where tableB.A_id = tableA.A_id);