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”附近的语法不正确