문제

'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와 함께 결합 할 수 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top