mySQL Einfügen mehrerer Datensätze mit einer ausgewählten
Frage
Ich habe einen „Wörterbuch Tabelle“ bezeichnet car_status, die eine ‚id‘ Spalte und eine Spalte ‚Status‘ hat.
car_status
id status
1 broken
2 fixed
3 working
4 fast
5 slow
Ich habe eine Tabelle namens Autos mit den Spalten: id, Typ, status_id
cars
id type status_id
1 jeep 1
2 ford 3
3 acura 4
Ich hoffe, mehrere Datensätze in Autos setzen und sie alle den Status mit „Arbeit“ in Verbindung geben. Was ist der beste / einfachste Weg? Ich weiß, ich kann abfragen und die status_id finden, die „Arbeit“ ist, und dann ein Insert-Abfrage tun, sondern ist es trotzdem, es mit einer INSERT-Abfrage zu tun, mit einer Verknüpfung oder wählen Sie?
Ich habe versucht, Sachen wie:
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"
Danke!
Lösung
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);
Andere Tipps
Dies ist MS SQL, aber ich denke, Sie so etwas tun kann:
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...
Gibt es einen Grund, warum Sie es in einer einzigen Anweisung zu tun? Persönlich würde ich nur eine Insert-Anweisung für jede Zeile schreiben. Ich denke, man auch eine temporäre Tabelle mit allen neuen Typen erstellen könnte und dann kommen, dass mit der Status-ID.