MySQL: Ganzen Satz finden zu MIN( tag )
bearbeitet von Rolf BHallo Rolf,
~~~sql,bad
SELECT adress_id,
ort, tag, uhr,
ROW_NUMBER() OVER(PARTITION BY adress_id
ORDER BY tag, uhr) as term_row
FROM termine
WHERE term_row = 1
ORDER BY tag, uhr
~~~
geht nicht. Man kann term_row nicht im WHERE ansprechen und man kann keine Window-Funktion im WHERE verwenden.
Was geht, ist eine CTE (Common Table Expression) - ab Maria DB 10.2.1:
~~~sql
WITH terminsort AS (
SELECT adress_id, ort, tag, uhr,
ROW_NUMBER() OVER(PARTITION BY adress_id
ORDER BY tag, uhr) as zeile
FROM termine
)
SELECT adress_id, ort, tag, uhr
FROM terminsort
WHERE zeile = 1
~~~
oder, wenn man noch eine Alt-Maria oder ein MYSQL 5.x hat, mit einem SELECT als FROM-Angabe:
~~~sql
SELECT ts.adress_id, ts.ort, ts.tag, ts.uhr
FROM (SELECT adress_id, ort, tag, uhr,
ROW_NUMBER() OVER(PARTITION BY adress_id
ORDER BY tag, uhr) as zeile
FROM termine) ts
WHERE ts.zeile = 1
~~~
_Rolf_
--
sumpsi - posui - obstruxi