MySQLのユーザ変数(@hoge:=var)でサブクエリの代替を、と思って試してみたけどよく分からない。
単純に1レコード(カラム)を限定する場合なら問題ないんだけど、複数の結果が返る場合はどうすればいいんだろう。配列みたくなって、"... IN (@hoge)"で出来ればいいんだけど、それは駄目っぽい。最後の結果で上書きされていく?
ドキュメントを軽くあさって見ても複数レコードを入れる場合については見当たらず。MySQL4.0でちょっと複雑な事をしようと思ったら、スクリプトから実行しないと駄目なのかな?初期化スクリプトで、とあるステータスのレコードだけを対象にしたいだけなんだけど、それをスクリプトで書こうとすると簡単だけどめんどくさい。
どうしてもやらなきゃいけない事ではない(全部を対象にしても問題ない)んだけど、簡単なやり方があるなら出来た方がベター。いっそ、その辺のサブクエリ代替処理系を作った方がいいのかな?サブクエリを見つけたら、妥当なクエリに分割して、結果を使い回してクエリを発行していく、みたいに。そっちのがめんどうかな?OSは無茶だけど、その程度なら頑張り次第な気もするし。完全な処理系じゃなくて、SQLファイルを読み込むラッパー的なもの。ありそうな気もするし、探してみようかな。
もう少しドキュメント類を探してみて、なさそうなら諦めるか挑戦するか考えます。


コメントする