Sql或MySql语句产生解析错误

Sql or MySql statement produces parse error

本文关键字:错误 MySql 语句 Sql      更新时间:2023-09-26

我正在遵循这个教程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。