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

아 ... 나는 내가 장님이된다는 것을 알았다. 그랬어. –