問題タブ [user-variables]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - Insert Select とユーザー変数を使用した MySQL ストアド プロシージャ
問題: MySQL ストアド プロシージャがあり、プロシージャが呼び出されるたびにユーザー変数を 0 にリセットしたいのですが、変数は前回の実行ごとにその値を記憶しているようで、ゼロに初期化できません。
詳細:データ テーブル ( と呼ばれるdata
) があり、そこから読み取り、別のテーブル ( と呼ばれる) で 1 対 1 の相関関係でレコードを生成しますresults
。これは、Insert Select ステートメントを使用するストアド プロシージャで行います。@mycount
行ごとにインクリメントするユーザー変数も使用します。これが私のコードの簡略版です:
分析:@mycount
これは、実行するたびにゼロにリセットする必要があり、SET
上記のステートメントがそれを達成していないことを除いて、ほぼ希望どおりに機能します。@mycount
デバッグ時に、前回のストアド プロシージャの実行からの最後の値が常に記憶されていることがわかります。また、挿入後にゼロに設定しようとしました。
ノート:
@
行番号をインクリメントして追跡するために変数を使用しています。おそらくここに別のオプションがありますか?- この問題は、Having 句に関連しているようです。having 句を使用せずに同様の別のクエリを実行すると、変数は問題なくリセットされます。
質問:@mycount
毎回実行する前にゼロに設定できないのはなぜですか? それがリセットされていて、Having 句が予期しないカウントを引き起こしているだけの場合、SQL を書き直すより良い方法はありますか?
これはかなりあいまいに思えるので、誰かが似たようなことに遭遇したことを願っています。
mysql-5.5 - DATE変数の設定はSQLです
以下のコードで DATE() 変数を使用してもうまくいきません - 構文でエラーが発生します。SELECT @mydate := DATE(NOW()) も試しましたが、同じエラーが発生しました。MySQL 5.5 を使用しています
mysql - サブクエリで変数を定義して使用しますか?
私は通常、「ユーザー変数を含む式の評価順序は未定義」でselect
あることを知っているため、同じステートメントで変数を安全に定義して使用することはできません。しかし、サブクエリがある場合はどうなるでしょうか。例として、次のようなものがあります。
サブクエリを繰り返す代わりに安全に使用する方法はありますか? もしそうなら、私は関数でそれを行うことができますか、またはサブクエリが最初に表示されたとき(またはいずれか)で実行できますか?(select @foo:=min(date_)from t where i.col1=col1)
datediff
もちろん、できました
次に、簡単な後処理を行ってdatediff
. または、2 つの別個のクエリを作成することもできます。しかし、それらはクエリとサブクエリで同じ変数を安全に定義して使用できるかどうかという私の質問には答えません。
java - MySQL ユーザー変数のリセット/クリア
一時テーブルを使用して複雑で高価なクエリを小さな断片に分割する多数の MySQL クエリがあります。
問題は、接続プールを使用しているため、 を閉じてもこれらのテーブルがクリアされないことjava.sql.Connection
です。
drop temporary table x;
必要なクエリを実行する前に、それらを手動で ( ) 1 つずつ削除できますが、これはミスが原因で発生する可能性があります。
java.sql.Connection.close()
データベース接続を閉じずに現在のセッション内で作成されたすべての一時テーブルをリセットする方法(JDBC/MySQL、API/構成) はありますか?接続プールを提供しますか?
編集:
MySQL バージョン 5.7.3 からのみ、「接続のリセット」機能の実装が開始されたようです。(リリースノート: https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-3.html ) ただし、バージョン 5.7 が残っているため、当面は使用しません。開発リリース。
mysql - 'IN' の where 句のユーザー変数
MYSQL でユーザー変数を使用すると問題が発生します。これが私が書いたコードです。これはエラーを生成していませんが、望ましい結果を示していません。
しかし、これを MySQL で実行すると、必要な行が返されません。ユーザー変数の定義に使用した select ステートメントを 2 番目の select ステートメントの where ステートメントにコピーすると、必要な結果が表示されます。つまり、次のコードは必要な結果を生成します。
初めて何を間違っていますか?私が言ったように、ステートメントはエラーを引き起こしませんが、必要な結果は表示されません。
私を助けてくれてありがとう。
乾杯、
プラタメシュ
mysql - 特定の ID ごとの MySQL ユーザー定義変数
私はテーブルを作成し、このクエリでいくつかのダミーデータを挿入しました:
そして、次のようなテーブル結果を取得したい:
私はこのようなクエリを作成しました:
ただし、saldo 履歴の結果は、すべての idproduct に対して計算されます。
すべてのidproductの「saldo」履歴を取得する方法は?
mysql - マルチネストされたクエリ内のユーザー変数
内部に複数のクエリがあるかなり長く複雑なクエリを最適化する必要があります。第 3 世代の SELECT として何度も繰り返されるサブクエリがあります。
完全なクエリの縮小版を次に示します。
私がやりたいことは、サブクエリを含むユーザー変数を作成して、レコードごとに再評価されるようにすることですが、レコードごとに 1 回だけです。今のやり方で動作しますが、3分以上かかります!. さまざまなオプションを何度も試しましたが、構文が正しくないようです。問題は、ユーザー変数サブクエリに p への参照が含まれていることです。
ありがとう、私の下手な英語でごめんなさい。