Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mysql



sammy
21-09-2003, 09:05
Hallo,

ich brauche ne abfrage auf eine tabelle die mir alle zeilen wählt wo in einer spalte mehrmals der gleiche wert vorkommt:

Beispiel:

------------ ------------ --------------
| Spalte1 | Spalte 2 | Spalte 3 |
------------- ------------ ---------------
| abc | xyz | bla |
| xyz | abc | blub |
| xyz | 123 | blaeh |
| 123 | 123 | blub |
--------------------------------------------


hier soll das doppelte vorkommen eines wertes für spalte1 gemacht werden,
also würde ich als ergebnis folgendes haben wollen:

| xyz | abc | blub |
| xyz | 123 | blaeh |


hoffe es ist halbwegs klar was ich meine

sagi
21-09-2003, 15:30
Naja. ich vermute mal, dass das eine sehr wueste Kombination aus COUNT, GROUP BY und Subselects wird.

In PostgreSQL wuerde ich das so angehen:

SELECT * FROM table GROUP BY col1 HAVING COUNT(*) > 1;

Aber ich glaube so etwas wie HAVING gibt es in MySQL ja nicht, oder?

mfg

c.

Christoph
01-10-2003, 16:09
In PostgreSQL wuerde ich das so angehen:


SELECT * FROM table GROUP BY col1 HAVING COUNT(*) > 1;


Das geht so nicht, weil in GROUP BY alle "rohen" Spalten vorkommen müssen.
Also musst Du dieses Statement variieren und in ein Subselect verpacken:


SELECT * FROM table WHERE col1 IN (SELECT col1 FROM table GROUP BY col1 HAVING ...)

Allerdings geht das mit MySQL erst recht nicht....

sagi
01-10-2003, 21:51
stimmt eigentlich.... danke fuer den Hinweis.

TODO: PostgreSQL Buch nochmals lesen :)

mehlvogel
02-10-2003, 08:03
Original geschrieben von Christoph

Allerdings geht das mit MySQL erst recht nicht....

Kann mySQL 4 mittlerweile nicht Sub Selects?