簡體   English   中英

錯誤代碼:1241。操作數應包含 1 列不知道如何解決此問題

[英]Error Code: 1241. Operand should contain 1 column(s) don't know how to fix this

DELIMITER //
CREATE PROCEDURE positioner(objectivedate date)
BEGIN
    DECLARE var1 INT(3) DEFAULT 0;
    DECLARE var2 INT(3) DEFAULT 0;
    DECLARE var3 INT(3) DEFAULT 0;
    
    SET var1 = (SELECT COUNT(CID) FROM erd.caddy WHERE (WorkDate = objectivedate, WorkTime = '1'));
    SET var2 = (SELECT COUNT(CID) FROM erd.caddy WHERE (WorkDate = 'objectivedate', WorkTime = '2'));
    SET var3 = (SELECT COUNT(CID) FROM erd.caddy WHERE (WorkDate = 'objectivedate', WorkTime = '3'));
    SELECT var1 AS '1부',var2 AS '2부', var3 AS '3부';
END; //
DELIMITER ;

您好,我正在嘗試通過放置某些 WorkDate(我將其設置為objectivedate)來創建一個按 WorkTime 計算 CID 數量的分隔符(這意味着工作 session 由 1、2、3 組成)。

當我撥打 CALL("2020-05-11")

錯誤說:

Error Code: 1241. Operand should contain 1 column(s)    0.000 sec

我確定它與 SET var1... 行有關,但我不知道如何解決這個問題。 生無可戀!!!

您在所有 3 個查詢的 where 子句中都有語法錯誤

寫如下:

var1= SELECT COUNT(CID) FROM erd.caddy WHERE WorkDate=objectiveDate and WorkTime='1'

您需要針對您的條件使用 boolean 表達式。

例如,您有:

WHERE (WorkDate = objectivedate, WorkTime = '1')

但它應該是:

WHERE (WorkDate = objectivedate AND WorkTime = '1')

另外,我不確定您是否打算這樣做:

WorkDate = 'objectivedate'

將“objectivedate”放在單引號中使其成為文字字符串“objectivedate”,而不是作為過程日期輸入參數的變量objectivedate

最后,我可以建議簡化您的程序:

CREATE PROCEDURE positioner(objectivedate date)
BEGIN
    SELECT 
        COUNT(CASE WorkTime WHEN '1' THEN true END) AS '1부',
        COUNT(CASE WorkTime WHEN '2' THEN true END) AS '2부',
        COUNT(CASE WorkTime WHEN '3' THEN true END) AS '3부'
    FROM erd.caddy
    WHERE WorkDate = objectivedate;
END

這將在一個查詢中獲得所有三個計數,並且您可以跳過聲明局部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM