pl: Zeilennummer per 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.

  1. 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.

    1. 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

      1. 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.

        --
        42
        1. 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

          --
          sumpsi - posui - clusi
          1. 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