sql >> Database teknologi >  >> RDS >> Mysql

MySql Bestem en rækkeforskydning fra et forespørgselsresultat

Så med dit tabeleksempel:

username ticket_number queue_timeDoc 0 0 Den 1. 3 ikke i sorteret resultatGrumpy 0 0Glad 0 0Søvnig 1 111 Følgende er i sorteret resultatBashful 2 222Sneezy 0 333Snehvid ??? 444 Dette er den aktuelle bruger (tildel ???=4)Dopey 0 555EvilQueen 0 666

hvordan tildeles værdien 4 til kolonnen ticket_number i brugernavnet SnowWhite, hvor 4 er rækkefølgen i et sorteret udvalg af de indledende rækker:

først få det sorterede resultat:

$result = mysql_query("SELECT * FROM table WHERE [here the condition for your sorted array]"); 
// don't forget to remove the []. they don't go there.
while ($row = mysql_fetch_assoc($result))
 {$array[] = $row;}
 

dette burde give dig noget som:

[0] [username] [Sleepy] [ticket_number] [1] [queue_time] [111] [1] [username] [Bashful] [ticket_number] [2] [queue_time] [222] [2] [username] [Sneezy] [ticket_number] [0] [queue_time] [333] [3] [username] [SnowWhite] [ticket_number] [NULL] [queue_time] [444]

gå derefter gennem dit array

    foreach ($array as $number => $row)
     {if ($row[username] == $userinfo)
       {$result = mysql_query('UPDATE table SET ticket_numer=' . ($number+1) . ' WHERE username=' . $userinfo);}}
 

rækken, der svarer til brugernavnet SnowWhite, får ($nummer + 1) (3 + 1) som ticket_number




  1. PostgreSQL IN-operator med underforespørgsel dårlig ydeevne

  2. Ændre tabel for at give begrænsning af fremmednøgle

  3. Udskiftning af store og små bogstaver i MySQL?

  4. Find den bedste matchende række i MySQL (InnoDB)