sql >> Databasteknik >  >> RDS >> Mysql

Mysql - Hur ordnar jag resultat genom att alternerande (1,2,3, 1, 2, 3, 1, 2, 3) rader, är det möjligt?

Använd:

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 har ingen rankningsfunktion, men som tur är kan du använda variabler. Nyckeln återställde @rownum-värdet när client_id inte matchar föregående client_id - ORDER BY i underfrågan är för att säkerställa att klienterna är i ordning.



  1. Hur väljer man ett begränsat antal rader för varje främmande nyckel?

  2. Oracle SQL-utvecklare:Fel - Testet misslyckades:Nätverksadaptern kunde inte upprätta anslutningen?

  3. Hibernate Criteria API:få n slumpmässiga rader

  4. LEN() vs DATALENGTH() i SQL Server