前提・実現したいこと
MySQLで、SELECTの結果をMySQL上の変数に格納し、この変数を別のSQL文に埋め込んで処理をしたいと思っています。下の処理をするために、1の結果(DataTable)をMySQL上の変数に格納し、2でこの変数を別のクエリに埋め込みたいのですが、変数に格納したDataTableを別のクエリに埋め込むことはできるのでしょうか。
1、employeesテーブルのid3番を検索し、実行した結果のDataTableをMySQL上の変数に格納
2、1のテーブルをソートするため、1のテーブルが格納されたMySQL上の変数を取得
該当のソースコード
var query = "SET @empt = 'employees';"; //employeesテーブルを@emptに格納 query += "SET @table = CONCAT('SELECT id, name, job FROM ', @empt, ' WHERE id LIKE % 3 %);"; query += "PREPARE stmt FROM @table;";
補足情報(FW/ツールのバージョンなど)
VisualStudio2019、MySQL、ASP.NET
ASP.NET のタグをつけてください。
> SELECTの結果をユーザー定義変数に格納し
意味が分かりません。あなたの言う「ユーザー定義変数」とはなんですか? 何をしたいのか、全体のシナリオ・ストーリーから始めてやりたいことを書いてください。
コメントありがとうございます。タグは追加いたします。
1、employeesテーブルをid3番でLIKEを実行し、この結果のテーブルをMySQL上の変数に格納
2、変数に格納された1のテーブルをソートしてC#の変数で受け取る
ということをしたいのですが、1の変数をどうやって2に渡したらよいのか分からず、質問させていただきました。
MySQL上の変数というのがあなたの言う「ユーザー定義変数」なのですか? 全然分からないのですけど。自分が無知だからなのかもしれませんが、分からないので答えようがないです。
もしくは、なのですが、クエリに、パラメータでC#の変数に格納されているテーブルを埋め込むことができればと思っています。テキストの値などはクエリに埋め込めるので、テーブルも埋め込むことができるのでしょうか。。
ユーザー定義変数とはそういったものだと思っていました。経験が浅く、わたしが勘違いしていたところがあるかもしれません。
あなたの言う「ユーザー定義変数」とは何なのですか? 「LIKEを実行した結果のテーブル」のこと? それは何なのですか? DataTable のこと? そうだとすると、どうやってそれを「変数に格納」するのですか? もっと具体的に、ごくごく具体的に、ここに書いてあること以外は知り得ない第三者が読んで、誤解の余地なく分かるように書いてください。
修正いたしました。わたしの言うユーザー定義変数は、「LIKEを実行した結果のテーブル」で、DataTableのことです。これを変数に格納できるのかがそもそも分かりませんでした。
> (DataTable)をMySQL上の変数に格納し
それはどうやってやるのですか? 見当が付きませんけど。具体的に、ごくごく具体的に、ここに書いてあること以外は知り得ない第三者が読んで、誤解の余地なく分かるように書いてください。
実現したい事を見る限り、変数に格納ではなくLOVE-KANONさんの言うようにサブクエリで実行すれば実現できそうではありますが、それでは解決しなさそうですか?あとは、SELECT結果を格納する一時テーブルを用意するという手もありますが。
何故質問のような事をしたいのか詳しく書けば、別の方法を提案してくれる人が居るかもしれません。
変数に格納しなくても、とのことで再度調べまして、自己解決いたしました。
自分がやりたかったことをもっとしっかり言葉にできたらよかったのですがどうにも言葉にできていなかったようです。
お騒がせいたしました。ありがとうございました。
一度、質問するときのヒント https://teratail.com/help/question-tips を読んでください。特に以下のところ:
> 人に質問をするには、自分が何を尋ねたいかを知っている必要があります。これは、「自分が今『何がわからないのか』がわかっていて、言語化できている」ということです。一見簡単なようですが、実はとても難しいことです。
言語化は、スレッドに書いてないことは知り得ない第三者が読んで分かるようにというのが大事です。今回、このスレッドの質問はその点が十分でなく、
> 何がわからないかわからない人から質問を受けても、答える側も困ってしまいます。
という状態です。今でも分かりません。
質問するときのヒントに書いてありますが、Teratail は「質問と回答を通してお互いに知識や情報を交換・共有する場所」ということですので、自己解決で自己満足しないで、どのように解決したのかの情報を共有できるよう配慮をお願いします。
回答3件
あなたの回答
tips
プレビュー