2011-11-23 76 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

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