MySQL从查询和存储过程返回两个不同的结果



我很困惑为什么MySQL Workbench对这个查询返回7(正确答案)

SELECT ScheduleLocationEventColorID 
FROM schedulelocationeventcolor 
WHERE ScheduleID = 1 AND LocationID = 1;

但是在存储过程中返回1(不正确)。

CREATE PROCEDURE `test`(
IN locationID INT,
IN scheduleID INT
)
BEGIN
DECLARE slecID INT;
SELECT ScheduleLocationEventColorID 
INTO slecID 
FROM schedulelocationeventcolor 
WHERE ScheduleID = scheduleID AND LocationID = locationID
LIMIT 1;

SELECT slecID;
END
-- calling the stored procedure here: 
CALL `test`(1, 1);

我尝试更改存储过程调用中的输入,但是我无法弄清楚为什么当结果应该是7时,我总是得到1。

应该使用与列名不同的名称来命名过程参数。列名不区分大小写。

现在你的过程有一个查询,条件是:

WHERE ScheduleID = ScheduleID AND LocationID = LocationID

其计算结果为true AND true,因为将列与自身进行比较必然为真(除非该列为NULL)。

对于LIMIT 1,查询返回两列都不是NULL的第一行。

最新更新