私はそれらにグループを割り当てるためCOL1のID INT、VARCHAR(カンマ区切り値)としてCOL2および列3とのテーブルを持っています。 表は共通データにカンマ区切り値をグループ化
col1 col2 group
..............................
1 2,3,4
2 5,6
3 1,2,5
4 7,8
5 11,3
6 22,8
のように見えるこれは、今私は、出力がグループを割り当てるための
col1 col2 group
..............................
1 2,3,4 1
2 5,6 1
3 1,2,5 1
4 7,8 2
5 11,3 1
6 22,8 2
ロジックのように見えるように彼らに何のグループを割り当てる必要がない、実際のデータのサンプルのみですいいえ、col2の文字列のすべてのコンマ区切り値は、同じグループ番号でなければならないということです。col2では '2'がそこにありますが、同じグループ番号でなければなりません。しかし、2,3,4は一緒ですcol2のどこに同じグループが割り当てられるかにかかわらず、3つのint値すべて。 大部分が2,3,4および1,2,5です。col2の両方に2があります。したがって、int 1,2,3,4,5はすべて同じグループ番号を割り当てる必要があります。 col2との一致でストアドプロシージャを試しましたが、目的の結果が得られません
何百万ものレコードを持つ元のテーブルから新しいテーブルを作ることができないので、ほとんどのimp(私は正規化を使用できません)私の文脈では役に立たない。これまでに達成
...... IHAVEは、グループ列自動インクリメントを設定してから、この手順を書いた: -
BEGIN
declare cil1_new,col2_new,group_new int;
declare done tinyint default 0;
declare group_new varchar(100);
declare cur1 cursor for select col1,col2,`group` from company ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
open cur1;
REPEAT
fetch cur1 into col1_new,col2_new,group_new;
update company set group=group_new where
match(col2) against(concat("'",col2_new,"'"));
until done end repeat;
close cur1;
select * from company;
END
この手順を、何のシンテックスミスを作業していないが、probleがあるさ私はexectly望ましい結果を達成していません。
をsplit_stringジェイパイプであります別のテーブルに列? – cha0site
リレーショナルデータベースにCSVを格納することは、バイクを使用して車を牽引することと同じです。 – Corbin
いいえ、本当のテーブルがgbのもので大きすぎるので、私はそれを正規化する余裕がありません。 –