Ich habe überall gesucht und kann nichts dergleichen finden. Ich habe zwei Tabellen, Tabelle eins t1
hat Einträge für jede a1
Wert, b1
Werte sind statisch für alle a1
mit Ausnahme eines Eintrags. weder a1
noch b1
sind Primärschlüssel. t1
hat auch andere statische Spalten für alle a1
.MYSQL mehrere Zeilen INSERT WHERE nicht EXISTS
Tabelle zwei t2
hat a2
und der b2
Wert, der nicht statisch ist. weder a2
noch b2
sind Primärschlüssel (ich verwende unabhängige ID-Spalten für Primärschlüssel).
Mein Ziel ist es, alle a2
Werte zu importieren, die nicht in t1
existieren. Beachten Sie, dass Tabelle 1 derzeit etwa 2 Millionen Einträge enthält und Tabelle 2 im Allgemeinen 150K-1M Einträge enthält.
dies funktioniert:
INSERT t1 (a1, b1, c1, d1)
SELECT a2, b2, 'constant1', 'constant2'
FROM t2 AS V2
WHERE NOT EXISTS (SELECT 1 FROM t1 WHERE a1=V2.a2)
aber es tritt nur ein a2
Eintritt in t1
, so dass fehlende Einträge.
Das ist meine Idee:
SELECT a2, b2 FROM t2 AS V2
INSERT INTO t1 (a1, b1, c1, d1)
VALUES (V2.a2, V2.b2, 'constant1', 'constant2'),
(V2.a2, 'constant3', 'constant1', 'constant2'),
(V2.a2, 'constant4', 'constant1', 'constant2'),
(V2.a2, 'constant5', 'constant1', 'constant2'),
(V2.a2, 'constant6', 'constant1', 'constant2'),
(V2.a2, 'constant7', 'constant1', 'constant2'),
(V2.a2, 'constant8', 'constant1', 'constant2'),
(V2.a2, 'constant9', 'constant1', 'constant2'),
(V2.a2, 'constant10', 'constant1', 'constant2'),
(V2.a2, 'constant11', 'constant1', 'constant2'),
(V2.a2, 'constant12', 'constant1', 'constant2'),
(V2.a2, 'constant13', 'constant1', 'constant2')
WHERE NOT EXISTS (SELECT 1 FROM t1 WHERE a1=V2.a2)
Ist so etwas möglich? (Dies funktioniert offensichtlich nicht, große Syntaxfehler).
Beispieldaten aus ACTUAL TABELLE:
+---------+------+-------------+-------------+--------------+
| id | name | destination | application | durationRate |
+---------+------+-------------+-------------+--------------+
| 45013 | 1 | 1305200 | audio | 0 |
| 335203 | 2 | 1305200 | audio | 0.014 |
| 625393 | 3 | 1305200 | audio | 0.005928 |
| 956657 | 4 | 1305200 | audio | 0 |
| 1251735 | 5 | 1305200 | audio | 0 |
| 1560365 | 6 | 1305200 | audio | 0.02 |
| 1868995 | 7 | 1305200 | audio | 0.014 |
| 2200259 | 9 | 1305200 | audio | 0.014 |
| 2517971 | 10 | 1305200 | audio | 0.018 |
| 2813049 | 11 | 1305200 | audio | 0.018 |
| 3121679 | 12 | 1305200 | audio | 0.00775 |
| 3430309 | 8 | 1305200 | audio | 0 |
| 45015 | 1 | 1305201 | audio | 0 |
| 335205 | 2 | 1305201 | audio | 0.014 |
| 625395 | 3 | 1305201 | audio | 0.006552 |
| 956659 | 4 | 1305201 | audio | 0 |
| 1251737 | 5 | 1305201 | audio | 0 |
| 1560367 | 6 | 1305201 | audio | 0.02 |
| 1868997 | 7 | 1305201 | audio | 0.014 |
| 2200261 | 9 | 1305201 | audio | 0.014 |
| 2517973 | 10 | 1305201 | audio | 0.018 |
| 2813051 | 11 | 1305201 | audio | 0.018 |
| 3121681 | 12 | 1305201 | audio | 0.00775 |
| 3430311 | 8 | 1305201 | audio | 0 |
| 45017 | 1 | 1305202 | audio | 0 |
| 335207 | 2 | 1305202 | audio | 0.014 |
| 625397 | 3 | 1305202 | audio | 0.00468 |
| 956661 | 4 | 1305202 | audio | 0 |
| 1251739 | 5 | 1305202 | audio | 0 |
| 1560369 | 6 | 1305202 | audio | 0.02 |
| 1868999 | 7 | 1305202 | audio | 0.014 |
| 2200263 | 9 | 1305202 | audio | 0.014 |
| 2517975 | 10 | 1305202 | audio | 0.018 |
| 2813053 | 11 | 1305202 | audio | 0.018 |
| 3121683 | 12 | 1305202 | audio | 0.00775 |
| 3430313 | 8 | 1305202 | audio | 0 |
+---------+------+-------------+-------------+--------------+
36 rows in set (0.00 sec)
In meinem Beispiel Tabelle, a1
= destination
, b1
= durationRate
, c1
= name
, d1
= application
gibt 12 unterschiedliche Rate von name
definiert Decks.
Warum Sie es erwarten 12 Zeilen einfügen von t2 bis t1?Vielleicht wäre es klarer, wenn Sie eine kleine Menge von Beispieldaten von jedem von t1 und t2 zeigen und daher welche Zeilen, die Sie erwarten, in t1 eingefügt werden? – kaj
sicher kein Problem – necival