- ベストアンサー
MySQLで同じデータにフラグ付けする方法とは?
- MySQLを使用して同じデータにフラグを付ける方法について教えてください。データベース初心者で、SQL文を試してもうまくいきません。
- 以下の2つのテーブルを使用し、テーブル2の項目カラムに存在するデータが、テーブル1の区分にあればフラグを付けたいです。
- 区分にデータが全て埋まっていれば簡単にできますが、先頭行のみデータがあり、次の区分まではNullです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ああ、なんとなくわかりました >NULLの場所に、aaaaa、bbbbb、cccccを挿入する方法も分からないため、 ということはnullを置き換えてよろしいのでしょうか? であれば、以下のようなupdateをしてみるとよいかもしれません //元データ create table tbl1(no int,kubun varchar(20) null,flg tinyint null); insert into tbl1 (no,kubun) values(1,'aaaaa'),(2,null),(3,null),(4,null),(5,'bbbbb'),(6,null),(7,'*nozoku'),(8,'ccccc'),(9,null); create table tbl2(no int,komoku varchar(20)); insert into tbl2 values(1,'bbbbb'),(2,'eeeee'); //nullや*で始まる区分を置き換える update tbl1 set kubun=if(kubun is null or kubun like '*%',@a,@a:=kubun) order by no; //tbl2の項目と合致するtbl1のフラグをたてる update tbl1 inner join tbl2 on tbl1.kubun=tbl2.komoku set tbl1.flg=1;
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
質問が意味不明 >テーブル1の区分にあれば、一致する行(NOカラムの5~7) たしかに5行目は「bbbbb」で一致しますが、6行目や7行目がどうして一致する行なのでしょう? また8行目以降がなぜ一致しない行なのでしょう? 「eeeee」の立場はどうなっているのでしょう?
補足
説明不足で、ごめんなさいm(__)m また、お返事が遅くなり、スミマセン。 テーブル1の区分には、NULLが入っていますが、 本当は、NOカラムの2~4には、aaaaaが入り、 6~7には、bbbbbが入り、9には、cccccが入ります。 データベースに情報が入力された時点で、先頭行にしか情報がありません。 テーブル2のeeeeeは、テーブル1に存在しないため、無視してください。 NULLの場所に、aaaaa、bbbbb、cccccを挿入する方法も分からないため、 私なりに考えて、テーブル2と一致する5に、フラグを付けて、 次の区分cccccが来るまで、6~7にフラグをつけたいと思いました。 でも、SQLで思い通りに動かないんです。どうすれば、良いのでしょうか? 他の方法も含めて、アドバイスよろしくお願いいたします。
お礼
やっと解決しました! ご回答ありがとうございました。