一直报错Result consisted of more than one row
网上说是查询出多条数据的问题 我不懂哪里查了多条数据
中间第二个select是网上抄的两张表的比较,其中就是要查出多条数据比较的 如果是这里的问题 那算了
下面是存储过程
CREATE DEFINER=`SkUser`@`%` PROCEDURE `sp_mes_compare_bom`(IN `production_task_id` varchar(100))
BEGIN
DECLARE parent_first_id VARCHAR ( 50 );#一级父id
DECLARE task_num DECIMAL(12,2);#任务产品数
DECLARE results INT;#结果
SELECT product_num INTO task_num FROM mes_production_task where production_task_id=production_task_id;
SELECT b.goodsbom_id INTO parent_first_id
FROM mes_production_task t LEFT JOIN goods_bom b on b.goods_id=t.product_id where t.production_task_id=production_task_id;
select result INTO results from (
select DISTINCT(if(a.nums>b.store_Safe_quantity,0,1)) as result
from (
SELECT goods_id,(task_num*num) as nums
FROM goods_bom
where parent_id=(parent_first_id) and goodsbom_id not in (SELECT parent_id FROM goods_bom )
UNION ALL
SELECT goods_id,(task_num*num) as nums
FROM goods_bom where parent_id in (SELECT goodsbom_id FROM goods_bom where parent_id=(parent_first_id))
) a,
(
SELECT goods_id,store_Safe_quantity FROM bas_goods where goods_id in
(SELECT goods_id
FROM (
SELECT goods_id
FROM goods_bom where parent_id=(parent_first_id) and goodsbom_id not in (SELECT parent_id FROM goods_bom )
UNION ALL
SELECT goods_id
FROM goods_bom where parent_id in (SELECT goodsbom_id FROM goods_bom where parent_id=(parent_first_id))
) a
)
) b
where a.goods_id = b.goods_id
) c where result='0' LIMIT 1;
IF (results=null) THEN
SELECT 1<2 as result;
ELSE
SELECT 1>2 as result;
END IF;
END
数据你要自己测试,就是按条件只能查询一条记录出来,但是你的子查询里面返回了多条记录,首先要厘清多表之间的关系。
如果有多条语句要批量处理的话,要考虑使用游标。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
SELECT product_num INTO task_num FROM mes_production_task where production_task_id=production_task_id;
SELECT b.goodsbom_id INTO parent_first_id
FROM mes_production_task t LEFT JOIN goods_bom b on b.goods_id=t.product_id where t.production_task_id=production_task_id;
哈哈哈哈 这两个的条件我心里知道是主键 只能查出一条 但电脑并不这么认为 都在后面加上limit 1 问题就解决了