0

我想将所有列 URL 行更新为 Test 但我从下面的查询中收到以下错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM STx AS a LEFT JOIN Routes AS b ON a.RouteID = b.RouteID WHERE a.GroupID ' at line 3

UPDATE Routes SET URL = 'test' 
WHERE ID in (
    SELECT b.ID
    FROM Stx a left JOIN Routes b on a.RouteID = b.RouteID
    where a.GroupID = 39 and a.Status = 'Provisioned'
);
4

3 回答 3

4

我可以看到这里没有语法错误。我在 MySQL 5.5 上对其进行了测试,并且语句解析得很好。

b.ID我怀疑您在和之间可能有一个非 ASCII 空白字符FROM。尝试删除这两个标记之间的所有空格和换行符,然后重新插入一个纯空格。

但这并不能解决下一个问题:MySQL 不支持表的 UPDATE 和在单个查询中从同一个表中选择。所以你不能像你一样使用子查询。这就是为什么其他答案建议使用多表更新的原因。

另一种可能性是您没有共享您正在运行的真实查询。Stack Overflow 上的很多人在查询方面寻求帮助,但他们修改了查询以在他们的问题中发布,使其更简单或隐藏专有信息。

请不要只说“它不起作用”。这无助于我们改进我们的答案。提供错误消息(如果有),并确保准确显示您正在输入的语句。

于 2013-02-08T20:26:33.547 回答
2

为什么不只是:

UPDATE Routes a JOIN Stx b ON (a.routeid = b.routeid)
 SET a.URL = 'test'
where b.groupid = 39 and b.status = 'Provisioned'

我在这里创建了一个示例 SQL Fiddle。

如果您尝试做一些不同的事情,请您发布您的真实查询,或者更改 SQL fiddle 中的数据模型以显示您遇到的麻烦,并发布一个链接。

于 2013-02-08T20:18:14.233 回答
0
   UPDATE Routes AS b
    JOIN Stx AS a ON a.RouteID = b.RouteID
    SET b.URL = 'test'
    WHERE a.GroupID = 39 and a.Status = 'Provisioned'
于 2013-02-08T20:27:15.710 回答