2013-07-09 23 views
0

目标是为一行数据搜索两个相似的表格。在2个表格中搜索唯一条目,然后更改数据

UPDATE 
regusers_test AS rt 
INNER JOIN 
alt_toon_test AS att 
ON 
att.`toonname` = rt.`toonname` 
SET 
rt.`server` = CASE WHEN rt.`username`='$user' AND rt.`server`='$oserver' AND rt.`toonname`='$otoon' THEN '$server' ELSE rt.`server` 
att.`server` = CASE WHEN att.`username`='$user' AND att.`server`='$oserver' AND att.`toonname`='$otoon' THEN '$server' ELSE att.`server` 
WHERE 
(
rt.`username`='$user' AND rt.`server`='$oserver' AND rt.`toonname`='$otoon' 
) 
OR 
(
att.`username`='$user' AND att.`server`='$oserver' AND att.`toonname`='$otoon' 
) 

但我不断收到:

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 'att.'server'=Case When att.'username'='$user'... 

我做了很多的谷歌搜索在周末,但没有找到一个解决方案。希望这里有人知道发生了什么。

+0

你需要你想设置的两个字段之间用逗号? – andrewsi

+0

回应您的查询。我相信这些错误会很明显。 – Strawberry

回答

0

SET在作业之间需要。

编辑固定查询:

UPDATE 
regusers_test AS rt 
INNER JOIN 
alt_toon_test AS att 
ON 
att.`toonname` = rt.`toonname` 
SET 
rt.`server` = CASE WHEN rt.`username`='$user' AND rt.`server`='$oserver' AND rt.`toonname`='$otoon' THEN '$server' ELSE rt.`server`, 
att.`server` = CASE WHEN att.`username`='$user' AND att.`server`='$oserver' AND att.`toonname`='$otoon' THEN '$server' ELSE att.`server` 
WHERE 
(
rt.`username`='$user' AND rt.`server`='$oserver' AND rt.`toonname`='$otoon' 
) 
OR 
(
att.`username`='$user' AND att.`server`='$oserver' AND att.`toonname`='$otoon' 
) 
+0

我完全复制并粘贴了Aragon0给我的修复程序,而且我仍然收到相同的消息。 mySQL版本是5.0 – CSharpMinor

+0

DERP,忘记在每列结束处放置“END”case – CSharpMinor

0

你只是错过了列之间的,附近

SET 
rt.`server` = CASE WHEN rt.`username`='$user' AND rt.`server`='$oserver' AND rt.`toonname`='$otoon' THEN '$server' ELSE rt.`server` END , 
att.`server` = CASE WHEN att.`username`='$user' AND att.`server`='$oserver' AND att.`toonname`='$otoon' THEN '$server' ELSE att.`server` END 
+0

好吧,我添加了逗号,并且仍然出现错误。 – CSharpMinor

+0

查看我的更新答案,'CASE'中缺少'END' –

相关问题