MySQL은 선택한 상태에서 여러 레코드를 삽입합니다
문제
'ID'열과 '상태'열이있는 CAR_STATUS라는 "사전 테이블"이 있습니다.
car_status
id status
1 broken
2 fixed
3 working
4 fast
5 slow
열이있는 자동차라는 테이블이 있습니다 : id, type, status_id
cars
id type status_id
1 jeep 1
2 ford 3
3 acura 4
여러 레코드를 자동차에 삽입하고 "작업"과 관련된 모든 상태를 제공하기를 바랍니다. 가장/ 가장 쉬운 방법은 무엇입니까? 쿼리를하고 "작동하는"상태 _id를 찾은 다음 삽입 쿼리를 수행 할 수 있지만 결합 또는 선택을 사용하여 하나의 삽입 쿼리를 사용하여 수행해야합니까?
나는 다음과 같은 것들을 시도했다 :
INSERT INTO cars (type, status_id)
VALUES
('GM',status_id),
('Toyota',status_id),
('Honda',status_id)
SELECT id as status_id
FROM car_status
WHERE status = "working"
감사!
해결책
DECLARE temp_status_id INT;
SELECT status_id
INTO temp_status_id
FROM car_status;
INSERT INTO cars (type, status_id)
VALUES ('GM',temp_status_id),
('Toyota',temp_status_id),
('Honda',temp_status_id);
다른 팁
이것은 MS SQL이지만 다음과 같은 일을 할 수 있다고 생각합니다.
DECLARE @status_id int
SELECT @status_id = status_id FROM car_status WHERE status = 'working'
INSERT INTO cars (type, status_id)
SELECT 'GM', @status_id
UNION
SELECT 'Toyota', @status_id
UNION...
단일 진술로하고 싶은 이유가 있습니까? 개인적으로, 나는 단지 각 행에 대한 삽입 문을 작성합니다. 모든 새로운 유형의 온도 테이블을 만들어 상태 ID와 함께 결합 할 수 있다고 생각합니다.
제휴하지 않습니다 StackOverflow