DELIMITER //
create procedure gettest()
begin
set ppp=(select deptName from interview_department where taskCode='11221111' and deptCode='302079' );
select ppp;
end;
//
DELIMITER ;
-- 表結構
taskcode deptcode
11221111 部門名稱
123 部門名稱
執行的時候 提示Error Code: 1242 Subquery returns more than 1 row
但是我的 where 條件都做限制了啊。 這是什么原因?
uj5u.com熱心網友回復:
select deptName from interview_department where taskCode='11221111' and deptCode='302079' 在陳述句后面加 limit 1; 就沒問題了,但是我的where條件設定了2個啊,為什么提示我子查詢 回傳多行?uj5u.com熱心網友回復:
set ppp=(select deptName from interview_department where taskCode='11221111' and deptCode='302079' limit 1);uj5u.com熱心網友回復:
為什么要加limit 1 才能好使呢?uj5u.com熱心網友回復:
因為符合條件的不只一條uj5u.com熱心網友回復:
因為mysql查詢會先經過語法分析,分析階段不會知道你具體資料的多少
不加limit 1 就有可能回傳的是多條,分析階段就會報錯了
uj5u.com熱心網友回復:
查詢出來的結果不是一行記錄。uj5u.com熱心網友回復:
DELIMITER $$
DROP PROCEDURE IF EXISTS `gettest`$$
CREATE PROCEDURE `gettest`(out _ppp varchar(20))
SQL SECURITY INVOKER
BEGIN
set _ppp = ( select deptName from interview_department where taskCode='11221111' and deptCode='302079' limit 1 );
select _ppp;
END$$
DELIMITER ;
call gettest(@q);
select @q;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/86717.html
標籤:MySQL
