[解決済み] MySQLで変数を宣言する方法は?
質問
2番目のクエリで使用できるように、mysqlで変数を宣言するにはどうすればよいですか?
というようなことを書きたいのですが。
SET start = 1;
SET finish = 10;
SELECT * FROM places WHERE place BETWEEN start AND finish;
解決方法は?
MySQL には、主に 3 種類の変数があります。
-
ユーザー定義変数 (接頭辞は
@
):ユーザー定義変数にアクセスするには、その変数を宣言する必要はありません。 初期化する。初期化されていない変数を参照する場合 初期化されると、その値は
NULL
で、型は string です。SELECT @var_any_var_name
を使用して変数を初期化することができます。
SET
またはSELECT
ステートメントを使用します。SET @start = 1, @finish = 10;
または
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;
ユーザー変数には、限られたデータセットから値を割り当てることができます。 型:整数、10進数、浮動小数点、バイナリまたは非バイナリ文字列。 またはNULL値。
ユーザー定義変数は、セッションに依存します。つまり、ユーザー あるクライアントが定義した変数を、他のクライアントが見たり使ったりすることはできません。 を使用します。
で使用することができます。
SELECT
クエリで MySQLユーザー変数の高度なテクニック . -
ローカル変数 (接頭辞なし) :
ローカル変数の宣言は
DECLARE
の前に にアクセスすることができます。これらの変数は、ローカル変数や入力パラメータとして使用することができます。 ストアドプロシージャの内部で
DELIMITER // CREATE PROCEDURE sp_test(var1 INT) BEGIN DECLARE start INT unsigned DEFAULT 1; DECLARE finish INT unsigned DEFAULT 10; SELECT var1, start, finish; SELECT * FROM places WHERE place BETWEEN start AND finish; END; // DELIMITER ; CALL sp_test(5);
もし
DEFAULT
節がない場合、初期値はNULL
.ローカル変数のスコープは
BEGIN ... END
ブロック内 と宣言されています。 -
サーバーシステム変数 (接頭辞は
@@
):MySQLサーバーは、多くの システム変数 をデフォルト値で設定します。 これらの型は
GLOBAL
,SESSION
またはBOTH
.グローバル変数はサーバーの全体的な動作に影響し、セッション変数は個々のクライアント接続に対する動作に影響します。
実行中のサーバーで使用されている現在の値を確認するには
SHOW VARIABLES
ステートメントまたはSELECT @@var_name
.SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;
これらの設定は、サーバー起動時にコマンドラインまたはオプション・ファイルのオプションを使用して行うことができます。 これらのほとんどは、サーバーの実行中に
SET GLOBAL
またはSET SESSION
:-- Syntax to Set value to a Global variable: SET GLOBAL sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000; -- Syntax to Set value to a Session variable: SET sort_buffer_size=1000000; SET SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@local.sort_buffer_size=10000;
関連
-
[解決済み】MySQL エラー 1093 - FROM 句で更新のターゲット テーブルを指定できません。
-
MySQL 接続タイムアウト。エラー SQLSTATE[HY000] [2002] 接続がタイムアウトしました 解決済み
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] ずっとUTF-8
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み] MySQLの重複レコードを検索する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLとOracleの一括挿入SQLの汎用的な記述例
-
SQL基本クエリステートメント
-
MySQLのselect、distinct、limitの使い方
-
mysqlのデータ圧縮性能比較 詳細
-
MySQLインストールチュートリアル(Linux版
-
mysqlインデックスが長すぎる特殊なキーが長すぎる解決策
-
[解決済み】MySQL - オペランドは1つのカラムを含む必要があります。
-
Djangoマイグレーションエラー 外部キー制約を追加できない
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?