2009-10-26 5 views
-2

이 문제는 나에게 이해할 수없는된다.MySQL의 트랜잭션 쿼리 도움

는이 오류 얻을 : 내가 MySQL 버전을 사용하고

#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 ' '[email protected]'' at line 1 

을 5.1.36

+0

이 하나가 모두를 혼란 것으로 보인다 나는이 새 게시물을 시작해야 할 수도 있습니다. 간단히 users 테이블에서 하나의 값을 선택한 다음 $ email의 사용자 정의 값을 테이블 sub_users에 삽입하기 만하면됩니다. – Chad

+0

새 게시물이 필요 없습니다. 회신을 신중히 다시 읽으십시오. – ChssPly76

답변

2

당신의 문을 두 문제 : 당신은 이메일을 선택하지 않을

  1. 삽입 (ID 전용)
  2. 대신에 '='를 사용합니다. 절.

    INSERT INTO sub_users(user_id, email) 
    SELECT user_id, email FROM users 
        WHERE email IN ('[email protected]', '[email protected]'); 
    

    대신 :

뭔가 같아야합니다.

업데이트 (주석 기준)

당신은 내가 볼 수있는 적어도 두 가지 오류가
INSERT INTO sub_users(user_id, email) 
SELECT user_id, '[email protected]' FROM users 
    WHERE email = '[email protected]'; 
+0

내가 삽입하고자하는 이메일은 내가 선택한 테이블에 있습니다. – Chad

+0

당신은'users'에서 선택하고 있습니다. 위의 질의는'email' 필드가 '[email protected]'또는 '[email protected]'인'users'의 모든 레코드를 선택하여'sub_users'에 삽입합니다. 다른 것을하고 싶다면 질문을 명확히하십시오 – ChssPly76

+0

좋아요, [email protected]으로 이메일의 user_id를 가져 와서 새 이메일 ([email protected])과 함께 sub_users 테이블에 입력하고 싶습니다.). 따라서 [email protected]은 데이터베이스가 아닌 PHP 변수에서 가져옵니다. – Chad

2

:

  1. 을 당신은 데이터 (user_idemail의 가치가 두 개의 열을 삽입하려고를)에만 적용되며 INSERT INTO ... SELECT의 후반부에서 하나의 열 (user_id) 만 선택하면됩니다. 삽입하려고하는 것과 동일한 수의 열을 선택해야하며 문제를 주문해야합니다.
  2. SELECT 술어에 구문 오류가 있습니다. 내가 사용하려는 생각 :

    WHERE email IN ('[email protected]', '[email protected]')

또는 그와 동등한 :

WHERE email = '[email protected]' 
    OR email = '[email protected]' 
+0

그러나 내가 삽입하고 싶은 두 번째 값이 선택에서 오는 것이 아니라면 어떻게 될까요? 그럼 내가 뭘해야하지? – Chad

+0

사용자 테이블에서 user_id 만 필요합니다. – Chad

+0

@Chad,'INSERT INTO sub_users (user_id, email) SELECT user_id '를 할 수 있습니다.'constant ... 'FROM ...'. ''some constant ''는 당신이 선택하는 테이블의 함수 또는 다른 필드 일 수도 있습니다. – dcrosta