MySQLのユーザ変数

MySQLのユーザ変数(@hoge:=var)でサブクエリの代替を、と思って試してみたけどよく分からない。

単純に1レコード(カラム)を限定する場合なら問題ないんだけど、複数の結果が返る場合はどうすればいいんだろう。配列みたくなって、"... IN (@hoge)"で出来ればいいんだけど、それは駄目っぽい。最後の結果で上書きされていく?

ドキュメントを軽くあさって見ても複数レコードを入れる場合については見当たらず。MySQL4.0でちょっと複雑な事をしようと思ったら、スクリプトから実行しないと駄目なのかな?初期化スクリプトで、とあるステータスのレコードだけを対象にしたいだけなんだけど、それをスクリプトで書こうとすると簡単だけどめんどくさい。

どうしてもやらなきゃいけない事ではない(全部を対象にしても問題ない)んだけど、簡単なやり方があるなら出来た方がベター。いっそ、その辺のサブクエリ代替処理系を作った方がいいのかな?サブクエリを見つけたら、妥当なクエリに分割して、結果を使い回してクエリを発行していく、みたいに。そっちのがめんどうかな?OSは無茶だけど、その程度なら頑張り次第な気もするし。完全な処理系じゃなくて、SQLファイルを読み込むラッパー的なもの。ありそうな気もするし、探してみようかな。

もう少しドキュメント類を探してみて、なさそうなら諦めるか挑戦するか考えます。

プロフィール

このブログ記事について

このページは、koshigoeが2006年7月18日 23:01に書いたブログ記事です。

ひとつ前のブログ記事は「コピペの罠」です。

次のブログ記事は「忍び寄る魔の手」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。