Sql或MySql语句产生解析错误
Sql or MySql statement produces parse error
我正在遵循这个教程http://blogs.msdn.com/b/miah/archive/2008/02/17/sql-if-exists-update-else-insert.aspx我现在正在进行第一个更艰苦的陈述…
我产生了一个错误,我不确定附近的是什么意思:
下面是我的代码:Error: ER_PARSE_ERROR: SQL语法错误;查看与MySQL服务器版本对应的手册,以获取在 'IF EXISTS (SELECT * FROM radio WHERE em='someone@gmail.com')附近使用的正确语法
//var _={'em':'email@address.com','st':'radio_name'};
var mysqlquery=
"IF EXISTS (SELECT * FROM radio WHERE em='"+_.em+"') "+
"UPDATE radio SET ("+
"em='"+_.em+"',"+
"st='"+_.st+"') WHERE em='"+_.em+"' "+
"ELSE "+
"INSERT INTO radio VALUES ("+
"em='"+_.em+"',"+
"st='"+_.st+"')";
我本以为错误来自我使用vars和开始/停止字符串,但我没有看到一个明显的错误,所以我的问题是:
这个语法对mysql或sql有效吗?我在运行mysql数据库,我很想知道这个解析错误会产生什么样的问题
你要么选错了教程,要么选错了数据库。该教程是为mssql和你正在运行mysql。
在mysql中可以使用REPLACEhttp://dev.mysql.com/doc/refman/5.5/en/replace.html
更新:
你必须传递主键来替换或查询插入,因为如果你不这样做,mysql将没有重复的。您也可以为em添加唯一索引,这样就不需要额外的主键了。
试试这样写:
"REPLACE INTO radio
VALUES (
SELECT id,'"+_.st+"','"+_.em+"' FROM radio WHERE em='"+_.em+"'
)"
考虑id是主键
重要的是:你的选择必须匹配你的列的计数,所以如果你有其他列选择他们就像id。
相关文章:
- 如何在node.js中设置mysql连接,以在带无符号整数的算术上抛出超出范围的错误
- 为什么尝试释放此Node MySQL池会导致错误
- 类型错误:无法读取未定义的 mysql 查询的属性“名称”
- 显示来自 mysql 数据库的 javascript 的语法错误
- 节点.js mysql 查询的解析错误
- 节点.js mysql 错误无法读取未定义的属性
- PHP JavaScript 从 MySQL 获取数据在服务器端出现 500 错误
- 将 mysql 页面更改为 mysqli,现在谷歌地图 initMap 函数抛出错误
- 第二个请求的节点mysql连接错误
- NodeJS和MySQL第一次查询后出现Getting 500错误
- node.js mySQL NOW()给出的日期错误
- PHP Mysql Insert Into不起作用,没有错误,没有数据发布到数据库,早些时候同一页面也起作用
- Google PHP/MySQL中的Javascript错误和Google Maps示例
- Mysql unicode错误异常
- JS,PHP,MySQL代码错误用于数学运算
- 当mysql提供十进制纬度和经度时,谷歌地图显示错误的地图
- MySQL/PHP/Javascript-回显文本中的撇号导致错误
- Openshift和外部mysql数据库与node-mysql(错误:连接ECONNREFUSED)
- nodjs插座.IO mysql在套接字引用上缺少错误处理程序
- Mysql查询引用语法错误