次の3つのテーブルがあります。
テーブル「名前」 --------------- ID名 --------------- 1冊 2ペン テーブル「色」 ------------------ IDカラー ------------------ 赤1個 2 イエロー 3 緑 4 ピンク 表「両方」 ------------------------ id名の色 ---------------------- 1 1 1 2 1 2 3 1 3 4 2 2
そして、私は次の機能を持っています:
DELIMITER //
CREATE FUNCTION get_word(n VARCHAR(20))
RETURNS VARCHAR(10)
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE b VARCHAR(20);
SELECT `color`.`color` INTO b FROM `name`
LEFT JOIN `both`
ON `name`.`id`=`both`.`name`
LEFT JOIN `color`
ON `color`.`id`=`both`.`color`
WHERE `name`.`name`=n;
RETURN b;
END//
DELIMITER ;
SELECT get_word('pen')を実行する と、期待どおりの黄色が 返されます。
しかし、コード SELECT get_word('book')を実行する と、エラーが発生します: #1172 - 結果は複数の行で構成されていました
私の質問: この関数が「ペン」を検索するときに行う単一のレコードだけでなく、複数のレコードでも機能するようにするにはどうすればよいですか? ありがとう
アップデート:
次のように関数なしでクエリを使用すると、正常に機能します。
SELECT `color`.`color` AS b FROM `name`
LEFT JOIN `both`
ON `name`.`id`=`both`.`name`
LEFT JOIN `color`
ON `color`.`id`=`both`.`color`
WHERE `name`.`name`='book';
そしてそれは戻ります:
**b** 赤 黄色 緑