代码之家  ›  专栏  ›  技术社区  ›  Cheryl Blossom

如何在mysql中设置SELECT语句的输出值?

  •  0
  • Cheryl Blossom  · 技术社区  · 7 年前

    因此,我正在创建一个mysql事件,它从事务\u 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\u amount)”附近使用的正确语法 来自第8行的交易

    1 回复  |  直到 7 年前
        1
  •  1
  •   Lukasz Szozda    7 年前

    你需要括号:

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

    另外,每个语句都应该以分号结尾。