I.はじめに
mysql関数を作成すると、関数の結果が間違っており、SELECT ... INTOを使用して繰り返し使用される変数に値を割り当てられなかったことがエラーの原因であることがわかりました。
変数を繰り返し使用すると、2番目の変数の割り当てに失敗しましたが、それでも最初の割り当ての値であり、元の値は2番目のクエリ結果であり、N / Aです。
SELECT N / A INTO変数;-この割り当て方法は割り当てに失敗し、最後の値を保持します。
二、テスト
1.テストデータテーブルを作成します
CREATE TABLE test ( id INT auto_increment, num INT, PRIMARY KEY ( id ) );
2.データを挿入します
INSERT INTO `demo`.`test`(`id`, `num`) VALUES (2, NULL);
INSERT INTO `demo`.`test`(`id`, `num`) VALUES (3, 3);
3.テスト
(1)シナリオ1:データベースにそのようなデータはありません
set @a = 100;
SELECT num from test where id = '1' into @a;
-- SELECT num from test where id = '2' into @a;
-- SELECT num from test where id = '3' into @a;
SELECT @a;
結果:100
(2)シナリオ2:このデータはデータベースに存在しますが、データはnullです
set @a = 100;
-- SELECT num from test where id = '1' into @a;
SELECT num from test where id = '2' into @a;
-- SELECT num from test where id = '3' into @a;
SELECT @a;
結果:Null
(3)シナリオ3:データベースにエントリデータがあり、値は3です。
set @a = 100;
-- SELECT num from test where id = '1' into @a;
-- SELECT num from test where id = '2' into @a;
SELECT num from test where id = '3' into @a;
SELECT @a;
結果:3