2013-07-08 42 views
-4

我想取代基于列值从其他列的值,但我不断收到语法错误。我究竟做错了什么?这是我累了:mysql设置和更新

SELECT * FROM `table` WHERE `id_1` =164 and `id_2` = 6 
SET `id_1` = (188|164) 
WHERE `id_1` = 164 AND `id_2` = 6 
UPDATE `table` 

这给了我一个SET附近的语法。

SELECT * FROM `table` WHERE `id_1` = 164 AND `id_2` = 6 
UPDATE `table` 
SET `id_1` = 188 
WHERE `id_2` = 6 

这给了我一个错误,下面的所有更新。

帮助?谢谢。

+0

这可能是最好查找UPDATE语句的语法。 http://dev.mysql.com/doc/refman/5.5/en/update.html –

回答

2

您不能在一个查询中使用UPDATE和SELECT。

分别执行两种查询是这样的:

SELECT * FROM `table` WHERE `id_1` = 164 AND `id_2` = 6 

然后执行:

UPDATE `table` 
SET `id_1` = 188 
WHERE `id_2` = 6; 
+0

这工作。谢谢 – Kisaragi

+0

@Kisaragi然后将其标记为已接受。 –

1

你缺少声明标点符号结束 ';'在您的选择语句后。当你做一个选择,你必须结束这种说法你开始你的下一个语句(在UPDATE)前:

SELECT * FROM `table` WHERE `id_1` = 164 AND `id_2` = 6; -- semicolon goes here 
UPDATE `table` 
SET `id_1` = 188 
WHERE `id_2` = 6; -- and another semicolon goes here 

这将摆脱你的语法错误。