문제

이 문제는 나를 당황하게하고 있습니다.

BEGIN;
INSERT INTO sub_users(user_id, email) 
SELECT user_id FROM users WHERE email='someemail@email.com', '$email';
COMMIT;

일반적으로 해당 거래에 여러 진술이 있지만 명확성을 위해 그 거래를 제거했습니다.

이 오류가 발생합니다.

#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 ' 'test@email.com'' at line 1

MySQL 버전 5.1.36을 사용하고 있습니다

도움이 되었습니까?

해결책

당신의 진술에 대한 두 가지 문제 :

  1. 삽입 할 이메일을 선택하지 않습니다 (ID 만)
  2. 대신 '='를 사용하고 있습니다 절.

다음과 같아야합니다.

INSERT INTO sub_users(user_id, email)
 SELECT user_id, email FROM users
  WHERE email IN ('someemail@email.com', 'test@email.com');

대신에.

업데이트 (댓글 기반)

INSERT INTO sub_users(user_id, email)
 SELECT user_id, 'test@email.com' FROM users
  WHERE email = 'someemail@email.com';

다른 팁

내가 볼 수있는 두 가지 이상 오류가 있습니다.

  1. 두 개의 열 상당의 데이터를 삽입하려고합니다 (user_id 그리고 email)하지만 하나의 열만 선택합니다 (user_id) 후반부터 INSERT INTO ... SELECT. 삽입하려는 것과 동일한 수의 열을 선택하고 문제를 주문해야합니다.
  2. 당신은 당신의 술어에 구문 오류가 있습니다. SELECT. 사용하고 싶다고 생각합니다.

    WHERE email IN ('email1@foo.com', 'email2@bar.com')

또는 그에 상응하는 :

WHERE email = 'email1@foo.com'
   OR email = 'email2@bar.com'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top