mysql - 如何在 mysql 中设置 SELECT 语句的输出值?
问题描述
所以,我正在创建一个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 服务器版本相对应的手册,以在第 8 行的“SET mmsales = SELECT SUM(total_amount) FROM transaction_tbl”附近使用正确的语法
解决方案
你需要括号:
SET mmsales = (SELECT SUM(total_amount)
FROM transaction_tbl
WHERE MONTH(transaction_date) = MONTH(CURRENT_DATE())
AND YEAR(transaction_date) = YEAR(CURRENT_DATE()));
另外,您应该用分号结束每个语句。
推荐阅读
- spring - 如何验证从授权服务器收到的令牌
- python - 发布者/订阅者 ROS Python
- python-3.x - 如何使用 python 日志记录将字节记录到一个处理程序,并将 unicode 记录到另一个处理程序?
- dart - Dart 中是否弃用了符号?
- python - 为什么我无法使用 Selenium 从本网站提取我需要的信息?
- node.js - Angular 无法解析依赖:zone.js
- javascript - 我如何复制一个对象然后比较上一个和下一个?
- c# - 如何在第一个数字之后拆分街道地址?
- javascript - 在画布中随机放置一个字母,从边框偏移 %
- javascript - 博览会弹出后,iOS 应用程序卡在启动画面