WHERE子句中的mysql错误

时间:2015-05-15 10:03:35

标签: mysql sql

我很抱歉提出这样一个基本问题,但我不能在这里发现错误,因为我可以看到一切都是正确的。然而我得到了错误,也许我需要一双新眼睛来看看

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近' WHERE event_id =' 1243''在INSERT INTO expiredEvents的第1行   (event_id的,sport_type,锦标赛,圆形,TEAM1,TEAM2,地点,EVENT_DATE)   价值观(' 1243',' Rugby'' Super15'' 3',' Waratahs',' ;鲨鱼','安联   体育场',')WHERE event_id =' 1243'

false

3 个答案:

答案 0 :(得分:1)

INSERT statement的正确语法中没有WHERE子句。

根据您要实现的目标,选择以下选项之一。

插入一个新行,如果已经存在另一个具有相同event_id的行,则不要打扰

INSERT INTO expiredEvents
    (event_id, sport_type, tournament, round, team1, team2, venue, event_date) 
VALUES
    ('$id', '$sport', '$trnmnt', '$rnd', '$t1', '$t2', '$ven', '$eDate') 

如果event_id是表UNIQUE INDEX的{​​{1}},则如果已存在expiredEvents的其他记录,此查询将失败。

假设event_id = '$id'是表格的event_id,请继续阅读。

插入新行但仅当它不存在

PK

INSERT IGNORE INTO expiredEvents (event_id, sport_type, tournament, round, team1, team2, venue, event_date) VALUES ('$id', '$sport', '$trnmnt', '$rnd', '$t1', '$t2', '$ven', '$eDate') 关键字将错误转换为警告,并且查询成功完成,但如果另一个已经存在IGNORE,则不会插入该行。

如果行不存在则插入行或更新现有行(如果存在)

event_id = '$id'

如果该行不存在,则此查询使用INSERT INTO expiredEvents (event_id, sport_type, tournament, round, team1, team2, venue, event_date) VALUES ('$id', '$sport', '$trnmnt', '$rnd', '$t1', '$t2', '$ven', '$eDate') ON DUPLICATE KEY UPDATE sport_type=VALUES(sport_type), round=round+1, event_date=NOW() 子句中的值插入它。如果该行已存在,则它使用ON DUPLICATE KEY UPDATE知道如何更新它。此查询中修改了三个字段:

  • VALUES - 列sport_type=VALUES(sport_type)的值使用列sport_typesport_type的查询中提供的值VALUES(sport_type))更新;
  • '$sport' - 使用当前值加1(round=VALUES(round)+1)更新列round的值;不使用round+1子句中提供的值;
  • VALUES - 使用函数event_date=NOW()返回的值修改列event_date的值;旧值和查询的NOW()子句中提供的值都将被忽略。

这只是一个例子,你可以放置更新现有行所需的任何表达式。

用新的

完全替换现有的行
VALUES

REPLACE statement是SQL标准的MySQL扩展。首先REPLACE INTO expiredEvents (event_id, sport_type, tournament, round, team1, team2, venue, event_date) VALUES ('$id', '$sport', '$trnmnt', '$rnd', '$t1', '$t2', '$ven', '$eDate') DELETE(如果有),然后event_id = '$id'是新行。它在功能上等同于INSERT,后面是此答案中上面公开的第一个查询。

答案 1 :(得分:0)

INSERT INTO / VALUES中不允许使用WHERE关键字 http://dev.mysql.com/doc/refman/5.6/en/insert.html

详细说明你想要完成的事情。

答案 2 :(得分:0)

不要在insert statment中使用where,而只是从包含确切记录的相应表中获取数据,并通过在该查询的select语句中添加条件来单独插入必要的行。 这是解决错误的简单方法,

    $sql="INSERT INTO expiredEvents 

(event_id,sport_type,tournament,round,team1,team2,venue,event_date) 

SELECT event_id,sport_type,tournament,round,team1,team2,venue,event_date from events WHERE event_id = '$id'"