Rolf B: Error 1062 behandeln

Beitrag lesen

Hallo Raiko,

das wäre interessant, wenn ich es an einen "Spaltenbedingung" (wenn spalte8 des neuen Datensatzes größer als Spalte8 des vorhandenen Datensatzes) knüpfen könnte.

Aha, warum denn nicht gleich, es gibt also ein Diskriminierkritierium.

Die folgende Query liefert Dir die Schlüsselwerte plus den größeren der beiden Werte aus Spalte 8:

select key1, key2, max(spalte8)
from tabelleB
group by key1, key2

Und damit kannst Du nun einen Filter bauen, der nur die Sätze aus Tabelle B darstellt, in denen Spalte8 den Maximalwert aufweist:

insert into tabelleA
select b.key1, b.key2, 
from tabelleB b JOIN (select key1, key2, max(spalte8) as max8
                      from tabelleB
                      group by key1, key2) f
                ON  b.key1 = f.key1
                AND b.key2 = f.key2
                AND b.spalte8 = f.max8

Das ist relativ alte Technik und funktioniert auch noch auf MySQL 5.6 (ein neueres hab ich grad nicht hier...).

Unter MySQL 8 sollten Dir auch Window-Funktionen helfen können.

Rolf

--
sumpsi - posui - obstruxi