# MYSQL-Abfrage jeweils nur des erste vorkommen eines Wertes einer Spalte



## MC-René (11. Februar 2011)

Hallo!

Ich hoffe es versteht jeder was ich machen will:

Ich habe eine Tabelle: 


```
+------+------+--------+------------+------------+
| ID   | Spalte 1   |  Spalte 2     | Spalte 3 |
+------+------+--------+------------+------------+
|   1 | ABC  | Blubb  | 1 |
|   2 | ABC  | Blubb  | 5 |
|   3 | ABC  | Blubb  | 5 |
|   4 | ABC  | Blubb  | 5 |
|   5 | ab    | Blabla | 7 |
|   6 | xy    | äöüß§€ | 9 |
|   7 | ab    | Blabla | 7 |
|   8 | xy    | äöüß§€ | 9 |
|   9 | xy    | äöüß§€ | 9 |
+------+------+--------+------------+------------+
```

Nun möchte ich in einer Abfrage jeweils ein Ergebnis mit dem ersten Vorkommen eines Wertes der Spalte 3:

Ausgegeben werden soll:

```
|   1 | ABC  | Blubb  | 1 |
|   2 | ABC  | Blubb  | 5 |
|   5 | ab    | Blabla | 7 |
|   6 | xy    | äöüß§€ | 9 |
```

so gehts ja nicht:

```
SELECT ID, Wert FROM Spalte3 ORDER BY Spalte3 LIMIT 1
```

Ich tippe mal auf


```
Group by
```

aber konnte bislang nichts gescheites basteln...
Ich wette yaslaw hat wieder ne zündende Idee...


----------



## Yaslaw (11. Februar 2011)

Yaslaw verschiebt als erstes das ganze mal zu den Datenbanken - die Ideen kommen später *g*


----------



## Yaslaw (11. Februar 2011)

etwa so?

```
SELECT
	mytable.*
FROM
	mytable
	INNER JOIN (
			SELECT
				MIN(id) AS first_id,
				`spalte 3` AS spalte_3
			FROM
				mytable
			GROUP BY
				`spalte 3`
		) AS filter
		ON filter.first_id = mytable.id
```


----------

