MySQL Wie füge ich eine Tabelle mit einer SELECT-Unterabfrage ein, die mehrere Zeilen zurückgibt?
INSERT INTO Results
(
People,
names,
)
VALUES
(
(
SELECT d.id
FROM Names f
JOIN People d ON d.id = f.id
),
(
"Henry"
),
);
I WANT, um die neue Tabelle mit allen Ergebnissen dieser Unterabfrage zu füllen. Wie mache ich das ohne ein ERROR 1242 (21000): Unterabfrage gibt mehr als eine Zeile zurück
INSERT INTO Results (People, names )
SELECT d.id, 'Henry'
FROM Names f
JOIN People d ON d.id = f.id
Kombinieren Sie den statischen String Henry
mit Ihrer SELECT
-Abfrage.
INSERT INTO Results
(
People,
names,
)
VALUES
(
(
SELECT d.id
FROM Names f
JOIN People d ON (d.id = f.id) limit 1
),
(
"Henry"
),
);
Ich habe festgestellt, dass dies gut funktioniert. Es ist ein wenig lang, aber oft müssen zusätzliche Daten gemischt werden.
Fügen Sie mehrere Zeilen aus Tabelle2 mit den Werten ..__ in Tabelle1 ein. BEISPIELE:
INSERT INTO table1 (col1, col2, col3, col4, col5)
SELECT col1,col2,col3,col4,col5
FROM table2 t2
WHERE t2.val2 IN (MULTIPLE VALUES)
AND (Another Conditional);
Sie können hartcodierte Werte einfügen, um mehrere Zeilen mit Wiederholungsdaten einzufügen:
INSERT INTO table1 (col1, col2, col3, col4, col5)
SELECT "Value", col2, col3, "1900-01-01","9999-12-31"
FROM table2 t2
WHERE t2.val2 IN (MULTIPLE VALUES)
AND (Another Conditional);
Beachten Sie Folgendes: "Wert", "1900-01-01", "9999-12-31" wird für alle eingefügten Zeilen wiederholt.
INSERT INTO Results
(
People,
names,
)
SELECT d.id, 'Henry'
FROM Names f
JOIN People d ON d.id = f.id
Der Grund für diesen Fehler (Unterabfrage gibt mehr als eine Zeile zurück) besteht darin, dass Sie Klammern () verwenden. Achten Sie auf die beste Antwort. Es enthält keine Parethese rund um die Unterabfrage
In MySql können mehrere Werte aus Zeichenfolgen wie die folgenden eingefügt werden, um Duplikate zu vermeiden. Vielen Dank.
insert into brand(name) select * from (
select 'Fender' as name
union select 'a'
union ..... ) t
where not exists (select 1 from brand t2 where t2.name COLLATE latin1_general_ci = t.name COLLATE utf8mb4_unicode_ci )