2012-04-11 5 views
0

Googleでしばらくの間、私は答えが見えませんでした。とにかく私はセットを行うストアドプロシージャの状況のような選択があります:システムにどこか他の既存のいくつかの冗長な記録のためにとにかくMySqlストアドプロシージャのSETコマンド - エラーが発生したとき

SET someVariable = (SELECT ...) 

、SETで使用されるこのSELECTクエリが複数の行を返します。私はこれが破損や悪いの原因になると思いますか?正誤?

ありがとうございました。

+0

複数のレコードをスカラー変数に渡すことはできません。正確なレコードを返すためにクエリを正しく記述するか、別のテーブルにデータを挿入します。 – Devart

+0

これは私がやったことです。私はこの特定のテーブルに余分なエントリがなく、それを額面価格で取ったと言われました。私が必要としていたコラムがユニークではないことが、これを追跡した理由です。 – kmarks2

答えて

2

真。変数に代入する場合、クエリは単一の列を含む単一の行を返す必要があります。

SELECT someColumn INTO myVariable ... LIMIT 1; 
+0

2行ある場合は、警告、例外、それは私の手順の残りの部分をクラッシュされますか?ありがとう。 – kmarks2

+0

それから、MySQLはエラーを出します(どれが1つではないかはわかりませんが、 "エラー1172 - 結果は複数の行で構成されています") – bfavaretto

+0

ありがとう、ありがとう。 – kmarks2

関連する問題