Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [MySQL] Numerare le righe secondo un certo SORT

    Salve.
    Ho una lista di righe in una tabella.

    Ho la necessità di Numerare le righe secondo un certo ordine alfabetico.

    Ossia, una una tabella con queste parole:
    alfa
    beta
    comodino
    domino
    elicottero
    fenice
    etc....

    Le devo ordinarle in modo alfabetico e assegnargli ad ognuno un numero crescente.

    Il problema è che le parole in questa lista sono aggiunte continuamente. una parola aggiunta non è detto che sia successiva all'ultima alfabetica presente nel database.
    Le parola in realtà sono HASH binari e possono essere anche 50k o 100k. Non posso tenere in ram tutti questi hash.

    Mi servirebbe una query che una volta lanciata fa qualcosa del tipo.
    UPDATE tabella SET numero=contatore_crescente() ORDER BY nome;
    E magari contatore_crescente() è una funzione che una volta che viene richiamata incrementa il proprio contatore interno.
    MYSQL ha molte funzioni però....bo.
    Aiuto

  2. #2
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Scusa la domanda stupida ma... perchè?

  3. #3
    [supersaibal]Originariamente inviato da VaLvOnAuTa
    Scusa la domanda stupida ma... perchè? [/supersaibal]
    In pratica ho studiato un algoritmo che serve a rialliniare due database differenti in rete. Le parole in realtà, come detto, sono hash che identificano righe di un altra tabella. Le righe sono molto grandi.

    Dunque. L'agoritmo mira a fare una ricerca binaria. Cioè, è simile ad una ricerca binaria.
    Per fare questa ricerca binaria ho la necessita di sapere quante righe ci sono tra: il primo hash, l'hash nel mezzo, e l'hash finale (alla lista di hash).

    Per vedere quanti hash ci sono, non posso contarli tutti quelli che ci sono tra HASH_1 e HASH_2, sarebbe troppo dispendioso in termini di carico CPU.
    Dunque, l'idea per contarli è questa:

    Numero tutti gli hash nel loro ordine alabetico:
    alfa 1
    beta 2
    comodino 3
    domino 4
    elicottero 5
    fenice 6
    ghianda 7
    hotel 8
    Imola 9
    Livorno 10
    Mamozzo 11
    Nostradamus 12

    Quanti hash ci sono tra Elicottero e Livorno?
    (10-5)+1=6
    Tra alfa e domino?
    (4-1)+1=4
    Mi basta prendere gli indici degli hash e sottrarli per ottenere così il numero corrispettivo degli hash che stanno tra di loro
    Capito?

  4. #4
    Come sono potente
    select @value:=0;
    UPDATE LOW_PRIORITY nuovo_congi SET CNTNUM=(@value:=@value+1) ORDER BY HASH;


    Il Low_priority serve per spalmare meglio il peso dell'update sulle risorse, credo.


    @value è una variabile che permane, infatti ogni volta la devo reimpostare a zero.

    Penso che su questa cosa ci scrivo una pillola ora se non è ancora stata scritta.

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.