sql >> Database >  >> RDS >> Mysql

Mysql - Hoe bestel ik resultaten door afwisselende (1,2,3, 1, 2, 3, 1, 2, 3,) rijen, is dat mogelijk?

Gebruik:

SELECT x.client_id, 
       x.project_id,
       x.project_name
  FROM (SELECT t.client_id,
               t.project_id,
               t.project_name,
               CASE
                 WHEN @client_id != t.client_id THEN @rownum := 0
                 WHEN @client_id = t.client_id THEN @rownum := @rownum + 1
                 ELSE @rownum 
               END AS rank,
               @client_id := t.client_id
          FROM TABLE t,
               (SELECT @rownum := 0, @client_id
      ORDER BY t.client_id) r) x
ORDER BY x.rank, x.client_id

MySQL heeft geen rangschikkingsfunctionaliteit, maar gelukkig kun je variabelen gebruiken. De sleutel was het resetten van de @rownum-waarde wanneer de client_id niet overeenkomt met de vorige client_id - de ORDER BY in de subquery is om ervoor te zorgen dat de clients in orde zijn.



  1. MySQL NOW()-functie met hoge precisie

  2. Voorbeelden van het converteren van 'date' naar 'datetime' in SQL Server (T-SQL)

  3. Combineer meerdere onderliggende rijen in één rij MYSQL

  4. Hoe het aantal getroffen rijen te krijgen, tijdens het uitvoeren van een MySQL-query vanuit bash?