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
次のように、テーブルを参照することでそれらを明確にすることもできます。
[クレジット: maganap ]
SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p
WHERE pName = iName
Martinの答えの代わりに、クエリを読みやすくするために、クエリの最後にINTO部分を追加することもできます。
SELECT Id, dateCreated FROM products INTO iId, dCreate