SQL 语法错误:SET 语法(Lambda 函数)

Posted

技术标签:

【中文标题】SQL 语法错误:SET 语法(Lambda 函数)【英文标题】:Error in your SQL syntax: SET Syntax (Lambda function) 【发布时间】:2022-01-11 16:40:07 【问题描述】:

在使用 Lambda 函数时,我尝试运行以下查询,但它会引发 ER_PARSE_ERROR 错误。

"errorType": "错误",

"errorMessage": "ER_PARSE_ERROR: 您的 SQL 语法有错误;请查看与您的 mysql 服务器版本相对应的手册,了解在第 1 行的 'SELECT DISTINCT Aj FROM ...' 附近使用的正确语法",

“跟踪”:[

const vandium = require('vandium');

var mysql = require('mysql');
var connection = mysql.createConnection( multipleStatements: true );

exports.handler = vandium.generic()
    .handler((event, context, callback) => 

        var connection = mysql.createConnection(
            host: 'xjxj',
            user: 'xjxj',
            password: 'xjxj',
            database: 'xjxj'
        );
        var x = connection.escape(event.x);
        var y= connection.escape(event.y);
        var z = connection.escape(event.z);
  connection.query("SET @"+y+"=2; SELECT DISTINCT A.j FROM A INNER JOIN B, C WHERE A.j = B.j and C.x= " + x + " and C.y="+y+"  and C.z= " + z + "", function (error, results, fields) 
            if (error) 
                connection.destroy();
                throw error;
            
            else 
                console.log(results);
                callback(null, results);
            
        );
    );

我还想到了类似的东西: ... "SET @y=2;..." 但是否定的

我正在尝试在类似的线路上实现一些东西:

SET @y := @k :=79;SELECT DISTINCT A.j FROM A INNER JOIN B, C WHERE A.j = B.j and C.x= " + x + " and C.y="+y+"  and C.z= " + z + "

当然,第一个代码块中没有 k,但这是粗略的想法。

出了什么问题?

【问题讨论】:

为什么 SQL 语法错误标记为javascript @Andreas,因为这段代码在 javascript 中 请添加完整的错误信息并显示连接字符串 @nbk 已编辑,请检查 更新您的问题并为您的查询添加完整的 sql 代码 ..(也是 where 之后的代码.....) 【参考方案1】:

您的代码似乎错误,您正在混合基于隐式连接的表名,以逗号分隔,where 条件和基于 JOIN 和 ON 子句的显式连接,并且您指的是查询中未包含的表名 something..

您应该使用正确、显式的连接子句并为列使用正确的表名

"SELECT DISTINCT A.j 
FROM A
INNER JOIN B on A.j = B.j
INNER JOIN C ON c.X= " + x +" and c.y = " +y + " and c.z="+z+";

【讨论】:

但是SET @id =2; 是必不可少的呢? 如果你的数据库允许多个命令..你可以添加 SET @id =2;在其他 sql 命令之前.... .. 这样不行,这是问题所在 如果没有 SET @id =2 的情况下没有 sql 错误; ..但是这个命令有错误..那么你应该检查你的db env是否允许多个sql命令..否则如果你在sql中有错误你应该更新你的问题并添加完整的sql代码......不仅仅是一个bief部分 已编辑,请检查

以上是关于SQL 语法错误:SET 语法(Lambda 函数)的主要内容,如果未能解决你的问题,请参考以下文章

错误 [42000] [Microsoft][SQL Native Client][SQL Server]关键字“SET”附近的语法不正确

Kotlin语法学习_Lambda编程

导入错误:您的 SQL 语法有错误;

linq和lambda基本操作

SQL-LINQ-Lambda语法对照

Python 3.2 Lambda 语法错误 [重复]