mysql - 我在此过程查询中做错了什么?

标签 mysql sql

我对 MySQL 不太熟悉,我尝试创建一个 MySQL 过程,从表中选择两个字段,将它们分配给一个变量,然后使用这些变量的值更新不同表中的另一个字段,到目前为止,这是我拥有的代码,但是当我运行它时,我收到此错误:

错误 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'SET @amnt = (SELECTinitial_ paymentFROMphWHERE payment_status 附近使用的正确语法= 第 5 行的“unconf”

这是我的代码:

DELIMITER //
CREATE PROCEDURE check_for_days()
BEGIN 
    SET @i = (SELECT COUNT(*) FROM `ph` WHERE `payment_status` = 'unconfirmed' && TIMESTAMPDIFF(DAY, `date_paired`, NOW()) > 2) ;

    label1:WHILE @i>0
        SET @amnt = (SELECT `initial_payment` FROM `ph` WHERE `payment_status` = 'unconfirmed' && TIMESTAMPDIFF(DAY, `date_paired`, NOW()) > 2 LIMIT 1);
        SET @id_to_cred = (SELECT `to_pay_id` FROM `ph` WHERE `payment_status` = 'unconfirmed' && TIMESTAMPDIFF(DAY, `date_paired`, NOW()) > 2 LIMIT 1);
        UPDATE `gh` SET `remaining_to_get` = + @amnt WHERE `u_id` = @id_to_cred;
        DELETE FROM `ph` WHERE `payment_status` = 'unconfirmed' && TIMESTAMPDIFF(DAY, `date_paired`, NOW()) > 2 LIMIT 1;
        SET @i = @i - 1;
    END WHILE label1;
END 
DELIMITER ;

最佳答案

给你语法错误:

label1:WHILE @i>0 
  SET @amnt

DO在哪里

label1:WHILE @i>0 DO 
      SET @amnt`

关于mysql - 我在此过程查询中做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43170941/

相关文章:

mysql - 损坏的插入语句

sql - 按表中的分组记录运行总计

sql - T-SQL 在现有表中添加新列并填充来自另外两个现有列的值

mysql - 如何对 GROUP_CONCAT(DISTINCT xxx) 进行 GROUP BY 作为 yyyy

C# 根据日期时间值和 ID 从数据库获取约会

sql - 每次连接derby数据库都需要建表吗?

Mysql string to date with given format containing a timezone specifier

mysql - 在表之间插入?

mysql - “启动”是一种类型,在给定上下文中无效

php - Mysql - 按相关性排序查询,无需全文方法