更新查询中的语法错误

时间:2012-05-01 06:10:24

标签: mysql

我正在

  

错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在''第1行'附近使用正确的语法   以下查询的错误

update Stops set trip_flag = true,
  route_type = (select route_type from Routes 
                where route_id = (select route_id from Trips 
                                  where trip_id = (select trip_id from  Stop_Times
                                                   where stop_id = (select stop_id from Stops where location_type = 0)));

请帮帮我。

2 个答案:

答案 0 :(得分:2)

结尾处有一个缺少的结束括号。

答案 1 :(得分:2)

正如the manual所说:

  

目前,您无法更新表并从子查询中的同一表中进行选择。

您可以使用多表更新语法和自联接来解决此问题:

UPDATE
       Stops
  JOIN Routes      ON Routes.route_type  = Stops.route_type
  JOIN Trips       ON Trips.route_id     = Routes.route_id
  JOIN Stop_Times  ON Stop_Times.trip_id = Trips.trip_id
  JOIN Stops AS s2 ON s2.stop_id         = Stop_Times.stop_id
SET
  Stops.trip_flag  = TRUE
WHERE
  s2.location_type = 0