1

したがって、このクエリを実行しようとすると、次のようになります。

-- Make sure the variable is typed to a single value...
SET @my_id=300;
SELECT `my_id` INTO @my_id
FROM `my_table` WHERE `field_1`= 123 AND `field_2`IS NULL;

...その後、次のエラーが発生します。

[Err] 1172 - Result consisted of more than one row

ただし、この選択を実行すると:

SELECT COUNT(*)
FROM `my_table` WHERE `field_1`= 123 AND `field_2`IS NULL;

...次に、ゼロを返します (つまり、一致しません)。0 はどのように 1 より大きいのですか?

4

1 に答える 1

0

おっと... 何が起こっているのか理解しました。最初の SELECT INTO ステートメントはプロシージャ内から実行され、実際に呼び出していたものは次のようになりました。

DECLARE my_id_out INT;
DECLARE field1 INT;
DECLARE field2 INT;

-- do some stuff here to set field1 and field2 variables

SELECT `my_id` INTO my_id_out
FROM `my_table` WHERE `field_1`= field1 AND `field_2`<=> field2;

すっごく...問題は、変数の名前の代わりにフィールドの名前を使用し、field1 = field1を比較していたことだけでした。

変数の名前を変更しただけで、すべて問題ありません...

于 2013-09-13T00:51:07.957 に答える