【问题标题】:Declaring a variable in MySQL with multiple JOIN tables在 MySQL 中使用多个 JOIN 表声明一个变量
【发布时间】:2018-05-29 09:19:38
【问题描述】:

我正在尝试获取初始月份的结果列,其中创建了一个 ID,其中 MySQL Workbench 中需要多个表 JOIN。

SET @in_month = '0';

SELECT 
    ca.id
FROM capital.user ca
    JOIN 
    capital.user_account cd on ca.id = cd.user_id
    JOIN
    capital.transaction ct on cd.user_id = ct.user_account_id
    JOIN
    capital.transaction_event ce on ct.id = ce.auth_entry_id 

  @in_month = month(ce.created) WHERE ce.message = 'Approved'

Group by id;

我得到语法错误:'@in_month'(在文本后缀处)在第 17 行的这个位置是无效输入,有什么想法我可能做错了吗?我对 SQL 没有太多经验

【问题讨论】:

标签: mysql sql syntax declare


【解决方案1】:

在变量声明 & 和连接条件后缺少分号

    SET @in_month = '0';

    SELECT 
        ca.id
    FROM capital.user ca
    JOIN capital.user_account cd on ca.id = cd.user_id
    JOIN capital.transaction ct on cd.user_id = ct.user_account_id
    JOIN capital.transaction_event ce on ct.id = ce.auth_entry_id  and 
         @in_month = month(ce.created) 
    WHERE ce.message = 'Approved'
    Group by id;

【讨论】:

  • 在第 1 行和第 17 行使用分号我得到“错误:此位置的输入无效”
  • 您在声明语句中也缺少分号,这就是它抛出错误的原因。我已经更新了代码.. 看看他们
  • 语法错误:'Declare'(declare)在第 1 行的此位置无效输入,语法错误:'@in_month'(在文本后缀处)在第 17 行的此位置无效输入
  • 你不必这样做 DECLARE @in_month INT;在您的代码中...只需检查一下
  • 我明白你的意思 Ankit,我已经删除了第 1 行。不幸的是,我仍然在第 17 行的这个位置得到相同的语法错误无效输入......现在第 16 行。@in_moth = month(ce .created) WHERE ce.message = '已批准'
猜你喜欢
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2020-12-13
  • 1970-01-01
  • 2015-08-29
  • 2017-09-20
相关资源
最近更新 更多