다른 테이블의 내용을 기반으로 새 테이블에 행을 삽입하고 업데이트하는 데 mysql 문에 대한 도움이 필요하다. 자동화 된 펄 코드에서 이것을 사용할 것이지만, mysql 문 자체가 문제가된다. PROFILE
이름mysql은 다른 테이블을 기반으로 문을 업데이트하고 삽입한다.
내 첫 번째 테이블이 같은 같습니다
+----------+---------------------------+
| ID | NAME |
+----------+---------------------------+
| 0 | Default profile |
| 04731470 | Development profile |
| 87645420 | Core Base |
| a41401a0 | Core Test |
| ba0e3000 | Development profile child |
| e37fe780 | Test2 |
+----------+---------------------------+
을 두 번째 DEPLOYMENT
(아무런없이 행)이 열이라고 :
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| PROF_ID | char(36) | NO | PRI | NULL | |
| NAME | varchar(60) | NO | | NULL | |
| ID | tinyint(4) | NO | MUL | NULL | |
+------------+-------------+------+-----+---------+-------+
ID.PROFILE
는 PROF_ID.DEPLOYMENT
에 대한 외래 키와 ID.PROFILE
에 대한 모든 값을 PROF_ID.DEPLOYMENT
에 입력하고 싶습니다. 그런 다음 NAME.PROFILE
필드에있는 단어를 기반으로 NAME.DEPLOYMENT
및 ID.DEPLOYMENT
필드를 설정해야합니다.
다음은 내가 삽입 문을 끝까지 수행 할 작업을 보여 주지만,이 때문에 "ERROR 1242 (21000) : 하위 쿼리는 1 개 이상의 행을 반환"실패 난
INSERT INTO DEPLOYMENT(PROF_ID,NAME,ID) VALUES((select ID from PROFILE where NAME like '%core%'),'Core','2');
INSERT INTO DEPLOYMENT(PROF_ID,NAME,ID) VALUES((select ID from PROFILE where NAME like '%development%'),'Dev','3');
INSERT INTO DEPLOYMENT(PROF_ID,NAME,ID) VALUES((select ID from PROFILE where NAME not like '%development%' and not like '%core%'),'Default','1');
이 부분의 업데이트 부분은 어디에서 시작해야할지 모르지만 NAME.PROFILE
필드의 텍스트가 위의 단어로 변경되면 ID.DEPLOYMENT
및 NAME.DEPLOYMENT
필드가 위와 같이 변경되어야합니다.
이것은 내가 찾고있는 테이블입니다.
+----------+---------------+----+
| PROF_ID | NAME | ID |
+----------+---------------+----+
| 0 | Default | 1 |
| 04731470 | Dev | 3 |
| 87645420 | Core | 2 |
| a41401a0 | Core | 2 |
| ba0e3000 | Dev | 3 |
| e37fe780 | Default | 1 |
+----------+---------------+----+
그런 다음 NAME.PROFILE
정보가 변경되면 명령문을 업데이트하고 싶습니다.
죄송합니다. 혼란 스럽다면, 설명하는 방법을 모르겠으며 여전히 mysql을 배우고 있습니다. 어떤 도움을 주셔서 감사합니다.