MySQLの同じ選択クエリ内で複数の列を複数の変数に選択できますか?
例えば:
DECLARE iId INT(20);
DECLARE dCreate DATETIME;
SELECT Id INTO iId, dateCreated INTO dCreate
FROM products
WHERE pName=iName;
これの正しい構文は何ですか?
MySQLの同じ選択クエリ内で複数の列を複数の変数に選択できますか?
例えば:
DECLARE iId INT(20);
DECLARE dCreate DATETIME;
SELECT Id INTO iId, dateCreated INTO dCreate
FROM products
WHERE pName=iName;
これの正しい構文は何ですか?
構文が正しくありません。INTO の前にフィールドを順番にリストし、その後に対応するターゲット変数をリストする必要があります。
SELECT Id, dateCreated
INTO iId, dCreate
FROM products
WHERE pName = iName
==========アドバイス==========
@martin clayton 答えは正しいですが、これはアドバイスのみです。
ストアド プロシージャであいまいな変数を使用しないようにしてください。
例 :
SELECT Id, dateCreated
INTO id, datecreated
FROM products
WHERE pName = iName
上記の例では、エラー (null 値エラー) が発生します。
以下の例は正しいです。これが理にかなっていることを願っています。
例 :
SELECT Id, dateCreated
INTO val_id, val_datecreated
FROM products
WHERE pName = iName
次のようにテーブルを参照することで、それらを明確にすることもできます。
[ クレジット :マガナプ]
SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p
WHERE pName = iName
マーティンの答えの代わりに、クエリを読みやすくするために、クエリの最後に INTO 部分を追加することもできます。
SELECT Id, dateCreated FROM products INTO iId, dCreate