2016-07-23 4 views
2

열 (ID, 사용자 이름, 비밀번호)이있는 사용자와 열 (user_id, 실패, 시간)이있는 user_failed의 2 개의 테이블이 있습니다. 사용자 이름 만 사용하여 테이블 user_failed에 삽입 할 수있는 가능한 방법이 있습니까? 이 코드를 시도했지만 실패했습니다 :MySQL에서 SELECT를 사용하는 INSERT 값

INSERT INTO `login_attempts`(`user_id`, `time`, `failed`) 
VALUES (SELECT user_id FROM users WHERE username = 'pokemon','',3) 

답변

3

SQL 쿼리가 여러 가지 이유로 올바르지 않습니다.

귀하의 쿼리를 올바르게 해석 한 경우 다음이 작동해야합니다.

INSERT INTO `login_attempts`(`user_id`, `time`, `failed`) 
SELECT id, '', 3 FROM users WHERE username = 'pokemon' 

INSERTSELECT에서 테이블로 보내고 것은 VALUES (...)을 필요로하지 않습니다. 다음은 VALUES (...)을 사용하는 방법에 대한 예는 다음과 같습니다 또한

INSERT INTO `login_attempts`(`user_id`, `time`, `failed`) 
VALUES (1, '', 3) 

, 귀하의 하위 쿼리 SELECT user_id FROM users WHERE username = 'pokemon','',3WHERE 조항이 유효하지 않습니다. 특히 '',3 부분은 timefailed에 삽입하려는 값입니다.

+0

그것이 내가이 오류 # 1054 얻을 수없는 것 - '필드 목록'에서 알 수없는 열 'USER_ID를' – Ying

+0

아이 일이야, 난 그냥 그건 내 사용자 테이블에 있기 때문에 ID로 USER_ID 변경 id는 user_id가 아닙니다. 감사 – Ying

0

이것은 작동합니다 .... 앞뒤 구문에 중괄호를 추가해야합니다.

INSERT INTO `login_attempts`(`user_id`, `time`, `failed`) VALUES ((SELECT user_id FROM users WHERE username = 'pokemon'),'',3)

관련 문제