【问题标题】:How to SET an output value of a SELECT statement in mysql?如何在 mysql 中设置 SELECT 语句的输出值?
【发布时间】:2018-10-20 12:33:58
【问题描述】:

所以,我正在创建一个 mysql EVENT,它每月从 transaction_tbl 计算销售额。我找不到我犯的错误。

这是我的查询:

DELIMITER |

 CREATE EVENT compute_sales
 ON SCHEDULE
      EVERY 1 MONTH STARTS '2018-10-01 22:00.00'
 DO
      BEGIN

 DECLARE mmsales DECIMAL(11, 2)
 SET mmsales = SELECT SUM(total_amount)
           FROM transaction_tbl
           WHERE MONTH(transaction_date) = MONTH(CURRENT_DATE()) AND
                YEAR(transaction_date) = YEAR(CURRENT_DATE())

 INSERT INTO sales_tbl (sales_year, sales_month, total_sales, time_frame) VALUES 
          (YEAR(CURRENT_DATE), MONTHNAME(CURRENT_DATE), mmsales, CURRENT_DATE)

 END |

 DELIMITER ;

这是我得到的错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'SET mmsales = SELECT SUM(total_amount) 附近使用正确的语法 FROM transaction_tbl' 在第 8 行

【问题讨论】:

    标签: mysql mysql-event


    【解决方案1】:

    你需要括号:

    SET mmsales = (SELECT SUM(total_amount)
                   FROM transaction_tbl
                   WHERE MONTH(transaction_date) = MONTH(CURRENT_DATE())
                     AND YEAR(transaction_date) = YEAR(CURRENT_DATE()));
    

    另外,您应该用分号结束每个语句。

    【讨论】:

      猜你喜欢
      • 2013-03-12
      • 1970-01-01
      • 2014-10-23
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2017-07-16
      • 1970-01-01
      相关资源
      最近更新 更多