반응형
다음 쿼리를 사용하여 새 레코드를 삽입하는 방법을 알아 내려고 노력하고 있습니다.
SELECT user.id, user.name, user.username, user.email,
IF(user.opted_in = 0, 'NO', 'YES') AS optedIn
FROM
user
LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id
ORDER BY user.id;
지금까지 내 INSERT
쿼리는 다음과 같습니다.
INSERT INTO user
SELECT *
FROM user
LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id;
그러나 왼쪽 및 내부 조인을 사용할 때 VALUE ( '', '', '', ''등)
을 수행하는 방법을 모르겠습니다.
그래서 내가 찾고있는 것은 다음과 같습니다.
사용자
테이블 :
id | name | username | password | OptIn
--------------------------------------------------------------------
562 Bob Barker bBarker BBarker@priceisright.com 1
또한 user_permission
테이블
user_id | Permission_id
-------------------------
562 4
업데이트 그래서 이렇게?
INSERT INTO user (name, username, password, email, opted_in) VALUES ('Bbarker','Bbarker','blahblahblah','Bbarker@priceisright.com',0);
INSERT INTO user_permission (user_id, permission_id) VALUES (LAST_INSERT_ID(),4);
해결 방법
선택하는 열에 대해 구체적이어야합니다. user
테이블에 id, name, username, opted_in
열이 4 개있는 경우 쿼리에서 정확히 해당 열 4 개를 선택해야합니다. 구문은 다음과 같습니다.
INSERT INTO user (id, name, username, opted_in)
SELECT id, name, username, opted_in
FROM user LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id
그러나 여기서는 user_permission
에 대해 조인 할 이유가없는 것 같습니다. 해당 테이블의 열이 user
에 삽입되지 않기 때문입니다. 사실,이 INSERT
는 기본 키 고유성 위반으로 인해 실패 할 것으로 보입니다.
MySQL은 동시에 여러 테이블에 삽입을 지원하지 않습니다. 첫 번째 쿼리의 마지막 삽입 ID를 사용하여 코드에서 두 개의 INSERT
문을 수행하거나 기본 테이블에 AFTER INSERT
트리거를 만들어야합니다.
INSERT INTO user (name, username, email, opted_in) VALUES ('a','b','c',0);
/* Gets the id of the new row and inserts into the other table */
INSERT INTO user_permission (user_id, permission_id) VALUES (LAST_INSERT_ID(), 4)
CREATE TRIGGER creat_perms AFTER INSERT ON `user`
FOR EACH ROW
BEGIN
INSERT INTO user_permission (user_id, permission_id) VALUES (NEW.id, 4)
END
참조 페이지 https://stackoverflow.com/questions/12073513
반응형
'MySql' 카테고리의 다른 글
MySQL DAYOFWEEK() - my week begins with monday (0) | 2021.02.01 |
---|---|
MySQL SQL 쿼리 결과를 PANDAS 데이터 구조로 변환하는 방법은 무엇입니까? (0) | 2021.02.01 |
MySQL datetime을 지원하는 Python JSON 인코더? (0) | 2021.02.01 |
MySQL 임시 테이블에서 UNION ALL을 할 수 없습니까? (0) | 2021.02.01 |
MySQL mysqldump 테이블 구조없이 데이터 추출 (0) | 2021.02.01 |
댓글