sql >> Databáze >  >> RDS >> Mysql

Mysql - Jak mohu seřadit výsledky střídáním (1,2,3, 1, 2, 3, 1, 2, 3,) řádků, je to možné?

Použijte:

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 nemá žádnou funkci pro hodnocení, ale naštěstí můžete použít proměnné. Klíč resetoval hodnotu @rownum, když se id_klienta neshoduje s předchozím id_klienta - ORDER BY v poddotazu má zajistit, že jsou klienti v pořádku.



  1. Jaké jsou rozdíly mezi zpětným zaškrtnutím a jednoduchou uvozovkou? Mohu použít příkaz IF v dotazu, jak je uvedeno výše?

  2. Příkazy MySQL INSERT nebo REPLACE

  3. Jak se vyhnout chybám agregační funkce nejsou povoleny v WHERE

  4. Jak zkontrolovat, zda INSERT proběhl dobře v uložené funkci?