この例のように、WHERE
句でユーザー定義変数を使用する方法があるかどうかを知りたいです。
SELECT id, location, @id := 10 FROM songs WHERE id = @id
このクエリはエラーなしで実行されますが、期待どおりに機能しません。
マイクE.が提案したものからそう遠くはありませんが、1つのステートメント:
SELECT id, location FROM songs, ( SELECT @id := 10 ) AS var WHERE id = @id;
同様のクエリを使用して、MySQLのウィンドウ関数をエミュレートしました。例えば。 行のサンプリング -同じステートメントで変数を使用する例
ユーザー定義変数 のMySQLマニュアルページから:
原則として、ユーザー変数に値を割り当てたり、同じステートメント内で値を読み取ったりしないでください。期待どおりの結果が得られる場合がありますが、これは保証されていません。
したがって、割り当てをselectステートメントから分離する必要があります。
SET @id = 10;
SELECT id, location, @id FROM songs WHERE id = @id;
もちろんですが、変数を設定して、あなたと同じステートメントで使用しようとする人を見たことがありません。試してください:
SET @id := 10;
SELECT @id := 10 FROM songs WHERE id = @id;
または
SELECT @id := 10 FROM songs;
SELECT @id := 10 FROM songs WHERE id = @id;
私は両方を使用しました、そしてそれらは両方とも私のために働くようです。
これは私のために働いた!
SET @identifier = 7;
SELECT * FROM test where identifier = @identifier;