2014-04-18 6 views
0

t2.f2에서 t1.f1으로 값을 복사하려고합니다. 즉, PHPbb3 포럼의 주제 및 게시물 테이블을 복사하려고합니다.업데이트 된 값으로 select 절을 사용하여 mysql을 업데이트하십시오.

MySQL said:

`#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 'WHERE t_posts.post_id = t_topics.topic_first_post_id) WHERE topic_id = 2' at line 1

가 어떻게이 사용하는 SQL을 achive 수 : 나는 다음과 같은 오류를 가지고있다

UPDATE t_topics SET 
topic_title = (SELECT t_posts.post_subject WHERE 
    t_posts.post_id = t_topics.topic_first_post_id) 
WHERE topic_id = 2; 

: 나는 다음과 같은 SQL을 시도?

답변

1

당신은 from 절 누락 :

UPDATE t_topics 
    SET topic_title = (SELECT t_posts.post_subject 
         FROM t_posts 
         WHERE t_posts.post_id = t_topics.topic_first_post_id 
        ) 
    WHERE topic_id = 2; 
+0

오 그것은 내 실수, 나는 분야 전에 테이블의 이름에 관한 것은 충분한 될 것입니다 것을 깨달았다 수있다. 고맙습니다. – SaidbakR

+0

그냥 약간의 힌트가 필요합니다. 모든 'topics' 테이블에 대해이 쿼리를 실행하려면 마지막 WHERE를 제거하기에 충분합니까? 포럼의 민감한 데이터이므로 파기를 두려워합니다. – SaidbakR

+1

실제 데이터에서 시도하기 전에 데이터 복사본에 대해'update' 및'delete' 쿼리를 테스트하거나 적어도 복구 할 수 있도록 테이블의 복사본을 적어도 어딘가에 저장하는 것이 좋습니다. 하지만 예, 'where'를 제거하면 모든 주제에 대한 조회를 수행하는 데 필요한 효과가 있어야합니다. 일치하는 것이 없으면'NULL'을 리턴 할 것입니다. –