118

MySQLの同じ選択クエリ内で複数の列を複数の変数に選択できますか?

例えば:

DECLARE iId INT(20);
DECLARE dCreate DATETIME;

SELECT Id INTO iId, dateCreated INTO dCreate 
FROM products
WHERE pName=iName;

これの正しい構文は何ですか?

4

3 に答える 3

242

構文が正しくありません。INTO の前にフィールドを順番にリストし、その後に対応するターゲット変数をリストする必要があります。

SELECT Id, dateCreated
INTO iId, dCreate
FROM products
WHERE pName = iName
于 2010-03-15T22:52:40.930 に答える
14

==========アドバイス==========

@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
于 2015-02-27T07:32:27.233 に答える
3

マーティンの答えの代わりに、クエリを読みやすくするために、クエリの最後に INTO 部分を追加することもできます。

SELECT Id, dateCreated FROM products INTO iId, dCreate
于 2015-01-22T15:56:08.133 に答える