我很困惑為什么 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。
uj5u.com熱心網友回復:
您應該將程序引數命名為與列名不同的名稱。列名不區分大小寫。
現在,您的程序有一個具有以下條件的查詢:
WHERE ScheduleID = ScheduleID AND LocationID = LocationID
評估為true AND true因為將列與其自身進行比較必然為真(除非該列為 NULL)。
因此,使用LIMIT 1,查詢回傳兩列都不為 NULL 的第一行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/533160.html
上一篇:可以執行MYSQLUPDATE查詢但實際上不更新列?[復制]
下一篇:我試圖在db中找到最喜歡的照片,有USERS、PHOTOS、LIKES、COMMENTS,但在likes表中沒有like_count列?
