Zeilennummer per SQL
pl
- sql
s. Thema. Also die Abfrage liefert mehrere Zeilen. Schön wärs wenn mir MySQL eine fortlaufende Nummer zu jeder Zeile liefern würde, geht da was?
MfG und Danke im Vorab.
Tach!
Schön wärs wenn mir MySQL eine fortlaufende Nummer zu jeder Zeile liefern würde, geht da was?
Mit benutzerdefinierten Variablen (user defined variables) sollte das gehen.
dedlfix.
Tach!
Schön wärs wenn mir MySQL eine fortlaufende Nummer zu jeder Zeile liefern würde, geht da was?
Mit benutzerdefinierten Variablen (user defined variables) sollte das gehen.
Ja, das denke ich auch, soll hier dran:
my $q = q(
SELECT url, count(url) as cnt
FROM log group by url
order by cnt desc limit 30
);
Aber morgen is auch nochn Tach.
MfG
Mahlzeit,
SELECT
COUNT(tab2.id) + 1 as position, tab1.url
FROM tab1 LEFT JOIN tab1 as tab2
ON tab1.id > tab2.id
GROUP BY tab1.id
ORDER BY tab1.id ASC
Den Snippet hab ich noch rum liegen für sowas. Hab den aber schon länger nicht mehr benutzt. Hilft dir evtl.
Hallo m.,
so sollte man das - zumindest heutzutage - auf keinen Fall machen. Der Aufwand dieses Statements wächst quadratisch mit der Zahl der Rows in der Table. Bei 1000 Zeilen umfasst der Join eine Viertelmillion Zeilen.
Generell gibt es in ANSI SQL die Windows Funktionen, darin RANK OVER, womit eine Nummerierung möglich ist. In MySQL ist das ab Version 8 verfügbar.
User Variablen in MySQL sind ein Workaround für MySQL < 8.
Rolf
moin @Rolf B
es ist ja auch keine Schande, den Rank in das Abfrageergebnis einzubauen:
# Rank einbauen
while( my($i, $r) = each @{$self->{STASH}{slice}} ){
$r->{rank} = 1 + $i;
}
Was danach ins Template gerendert wird in meinem Fall.
MfG