简体   繁体   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 ;

Hello I am trying to make a delimiter that counts number of CID by WorkTime (which means work session consists of 1,2,3) by putting certain WorkDate (which I set as objectivedate).您好,我正在尝试通过放置某些 WorkDate(我将其设置为objectivedate)来创建一个按 WorkTime 计算 CID 数量的分隔符(这意味着工作 session 由 1、2、3 组成)。

When I put CALL("2020-05-11")当我拨打 CALL("2020-05-11")

The error says that:错误说:

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

I am certain that it's about SET var1... row, but I don't know how to fix this.我确定它与 SET var1... 行有关,但我不知道如何解决这个问题。 I am desperate!!!生无可恋!!!

You have a syntax error in your where clause of all 3 queries您在所有 3 个查询的 where 子句中都有语法错误

write like below:写如下:

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

You need to use boolean expressions for your conditions.您需要针对您的条件使用 boolean 表达式。

For example you have:例如,您有:

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

But it should be:但它应该是:

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

Also I'm not sure you intended this:另外,我不确定您是否打算这样做:

WorkDate = 'objectivedate'

Putting 'objectivedate' in the single-quotes makes it a literal string 'objectivedate', not the variable objectivedate which is the date input parameter of the procedure.将“objectivedate”放在单引号中使其成为文字字符串“objectivedate”,而不是作为过程日期输入参数的变量objectivedate

Finally, I can suggest a simplification to your procedure:最后,我可以建议简化您的程序:

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

This gets all three counts in one query, and you can skip declaring the local variables.这将在一个查询中获得所有三个计数,并且您可以跳过声明局部变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 sql错误代码:1241。操作数应包含1列 - sql Error Code: 1241. Operand should contain 1 column 插入时出错 - 错误代码 1241。操作数应包含 1 列 - Error on Insert - error code 1241. operand should contain 1 column(s) mysql调用过程错误代码:1241。操作数应包含1列 - mysql calling procedure Error Code: 1241. Operand should contain 1 column(s) 尝试在mysql的情况下包含“或”-错误代码:1241。操作数应包含1列 - Trying to include an “or” in a case on mysql - Error Code: 1241. Operand should contain 1 column(s) 插入WHERE和AND,错误代码:1241。操作数应包含1列 - Inserting with WHERE and AND, Error Code: 1241. Operand should contain 1 column(s) 在 mysql 中使用 CASE function 但出现错误代码:1241 时出现问题。操作数应包含 1 列 - Problem when using CASE function in mysql but getting Error Code: 1241. Operand should contain 1 column(s) 使用带有out变量的sp会收到以下错误消息:错误代码:1241。操作数应包含1列 - Using a sp with an out variable get the following error message: Error Code: 1241. Operand should contain 1 column(s) 如何修复错误代码 1241:操作数应在 mysql 查询中包含 1 列? - How do I fix Error Code 1241: Operand should contain 1 column(s) in mysql query? MYSQL-错误代码:-1241“运算符应包含1列” - MYSQL - Error Code :- 1241 “Operand should contain 1 column(s) ” 错误代码:1241操作数应包含1列mysql - error code : 1241 Operand should contain 1 column(s) mysql
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM