MySQL 트랜잭션 쿼리 도움말
-
06-07-2019 - |
문제
이 문제는 나를 당황하게하고 있습니다.
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을 사용하고 있습니다
해결책
당신의 진술에 대한 두 가지 문제 :
- 삽입 할 이메일을 선택하지 않습니다 (ID 만)
- 대신 '='를 사용하고 있습니다 에 절.
다음과 같아야합니다.
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';
다른 팁
내가 볼 수있는 두 가지 이상 오류가 있습니다.
- 두 개의 열 상당의 데이터를 삽입하려고합니다 (
user_id
그리고email
)하지만 하나의 열만 선택합니다 (user_id
) 후반부터INSERT INTO ... SELECT
. 삽입하려는 것과 동일한 수의 열을 선택하고 문제를 주문해야합니다. 당신은 당신의 술어에 구문 오류가 있습니다.
SELECT
. 사용하고 싶다고 생각합니다.WHERE email IN ('email1@foo.com', 'email2@bar.com')
또는 그에 상응하는 :
WHERE email = 'email1@foo.com'
OR email = 'email2@bar.com'
제휴하지 않습니다 StackOverflow