【问题标题】:MySQL Procedure unable to perform as expectedMySQL 程序无法按预期执行
【发布时间】:2020-01-09 09:25:15
【问题描述】:
CREATE PROCEDURE `userCredentialsWeight`(IN data1 varchar(50), IN data2 varchar(250))
BEGIN

    /* all declaration */

    IF (SELECT field1 FROM user_credentials WHERE field1 = data1 LIMIT 1 )
    THEN
        SET DATA_WEIGHT = 75;
    ELSE
        SET DATA_WEIGHT = 100;
    END IF;

    /* More calculations here */  ---> this block contains all the calculation,
 actually i am new to procedure, i have done this using 
direct query from application but it requires 4 database requests 
which I want to minimize here

END

现在我的问题是 WHERE 没有获得 data1 的值之后的条件。

平台 - Mysql(我正在使用 MYSQL Workbench)

【问题讨论】:

  • 你想要什么?如果存在user_credentials.field1 = data1 的记录,则设置DATA_WEIGHT = 75,如果不存在则设置100?
  • 我已经修改了问题

标签: mysql procedure


【解决方案1】:

测试

SELECT CASE WHEN COUNT(*) = 0 
            THEN 100
            ELSE 75
            END
INTO data_weight 
FROM user_credentials
WHERE field1 = data1;

【讨论】:

  • 请始终将您的答案放在上下文中,而不仅仅是粘贴代码。有关详细信息,请参阅here
  • 这种格式怎么办 -->IF (SELECT field1 FROM user_credentials WHERE field1 = data1 LIMIT 1 )
  • 我的意思是如果条件里面
猜你喜欢
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 2022-01-17
  • 2021-11-12
  • 1970-01-01
相关资源
最近更新 更多