selectで複数のレコードを挿入するmySQL
質問
「辞書テーブル」があります「id」列と「status」列を持つcar_statusと呼ばれます。
car_status
id status
1 broken
2 fixed
3 working
4 fast
5 slow
id、type、status_idの列を持つcarsというテーブルがあります
cars
id type status_id
1 jeep 1
2 ford 3
3 acura 4
複数のレコードを車に挿入し、「作業中」に関連付けられているすべてのステータスを提供したいと考えています。最良/最も簡単な方法は何ですか?クエリを実行して、" working"であるstatus_idを見つけてから挿入クエリを実行できることは知っていますが、結合または選択を使用して1つの挿入クエリでそれを行う方法はありますか?
次のようなものを試しました:
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