Mysql MINUS

C

ctopfel2

Aktives Mitglied
Thread Starter
Dabei seit
29.07.2004
Beiträge
207
Reaktionspunkte
6
Hallo, ich habe ein dringendes Problem

Ich verwende MAMP, wo mysql 4.02 installiert ist.

Nun habe ich das folgende Problem: Ich möchte die Differenz von zwei Tabellen haben. In SQL gibt e dafür das MINUS Statement, welches aber in mysql nicht funktioniert.

da ich ich noch nicht mysql 4.1 habe, funktioniert das workaround mit dem WHERE NOT EXISTS auch nicht (mysql unterstützt erst ab Version 4.1 subqueries).

hat jemand eine idee, wie ich das machen kann?

gruss ctopfel
 
Ich kenn mich in den Untiefen des mysql-Dialektes nicht gut aus ( halte mich eben auch meist an Standard-SQL), denke aber das eine temporäre Tabelle zum Ziel helfen könnte. In die Tabelle müßte dann jeweils ein Primärindex aus den beiden Tabellen eingetragen werden, den Du dann vergleichst.
 
Oder Du suchst einfach die Schlüssel die in Tabelle 1 aber nicht in Tabelle 2 vorkommen:

SELECT *
FROM Table1
WHERE Table1.Key NOT IN (SELECT Table2.Key FROM Table2);


Hab gerade keine DB zum testen da, und das schon länger nicht mehr gemacht, aber das müsste so schon gehen.
 
Zuletzt bearbeitet:
Genau diese Sub-SELECTs kann mysql 4.0 glaube ich noch nicht!
 
aber

SELECT table1.*
FROM Table1, Table2
WHERE Table1.Key <> Table2.key;

sollte dann wenigstens funktionieren, oder?
 
Damit erezugst du das Carthesische Produkt und ziehst bischen was ab. Ist zuviel.

Müßte wohl eher sein:

Select table1.*
from table1 left join table2 on table1.id=table2.id
where table2.id is null
 
dann setz ich noch einen drauf und behaupte die letzte Zeile müßte lauten:

where table2.id is not null
 
Ich glaub Nogger hat Recht. Wenn du die Felder aus der zweiten Tabelle nimmst, die nicht NULL sind hast du die Schnittmenge anstelle der Differenz.
 
@rash65:
ähem, ja recht habt ihr! ;)
 
Möglich wären auch left outer joins :)

gute nacht!
 
hallo leute

habe das problem mit left joins lösen können.

gruss ctopfel
 
Zurück
Oben Unten