2011-11-23 72 views
1

任何人都可以发现这个东西的语法错误?MySQL语法错误 - 显而易见?

UPDATE `inventory` 
LEFT JOIN `manufacturers` ON (
    `man_id` = `manufacturers`.`id` 
) 
LEFT JOIN `meta_tags` ON (
    `meta_tags`.`page_url` = REPLACE(REPLACE(`manufacturers`.`title`, " ", "_"), "\", "_") 
) 
SET `inventory`.`tag_ids` = CONCAT_WS("," `tag_ids`, `tag_id`) 
WHERE FIND_IN_SET(`tag_id`, `tag_ids`) = 0 

错误消息:

#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 
'_")) SET `inventory`.`tag_ids` = CONCAT_WS("," `tag_' 
+1

不使用单引号引用的字符串?或者只是在TSQL中? – drdwilcox

+0

在MYSQL中无所谓,我不懂标准/ TSQL –

+0

嗯。很高兴知道。谢谢。 – drdwilcox

回答

3

你可能需要躲避\在你的外REPLACE()功能。尝试使用

REPLACE(REPLACE(`manufacturers`.`title`, " ", "_"), "\\", "_") 

代替你拥有的东西。 Here's the MySQL reference解释字符转义序列。

+0

嗯,那没有做到。还是)感谢你的建议。 (当然,完全有可能有不止一个问题) –

+0

@SamDufel:Hmph。这是我能看到的唯一的语法问题;即使SO语法突出显示器通过错误地对SQL的某些部分进行着色来捕获它。编辑:啊! 'CONCAT_WS()'中也缺少一个逗号。 –

3

而且

CONCAT_WS("," `tag_ids`, `tag_id`) 

应该

CONCAT_WS(",", `tag_ids`, `tag_id`) 

(缺少逗号)

+0

啊......我知道我正在失明。那样做了。 –