我有以下 3 个表:
表“名称” --------------- 身份证名称 --------------- 1 本书 2 笔 表“颜色” ------------------ 身份证颜色 ------------------ 1红色 2 黄 3 绿色 4 粉红色 表“两者” ---------------------- 身份证名称颜色 ---------------------- 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** 红色的 黄色 绿色