2017-03-01 1 views
-2

Ich versuche, eine Zeile zu einer Zeit bei jeder Ladung zu holen, versuchte ich, Zufallsfunktion in mysql (rand()), aber seine Reihe Zeile zufällig nicht nacheinander zu verwenden .Nur Zeile zufällig in aufsteigender Reihenfolge ohne Wiederholung in Mysql

meine Tabelle ist unten angegeben Angenommen:

<table border="1"> 
 
<tr> 
 
<td> 
 
Name 
 
</td> 
 
</tr> 
 
<tr><td>John A</td></tr> 
 
<tr><td>John C</td></tr> 
 
<tr><td>John D</td></tr> 
 
<tr><td>John T</td></tr> 
 
<tr><td>John X</td></tr> 
 
</table>

ich unter PHP-Code verwendet hatte;

$query = mysql_query("SELECT name FROM `student` WHERE `status`='1' ORDER BY RAND() LIMIT 1") or die ('Query is invalid: ' . mysql_error()); 
 
while ($row = mysql_fetch_array($query)) 
 
{ 
 
echo $name; 
 
}

Also jedes Mal, wenn die Seiten aktualisiert ich andere Zeile, aber es bekommen manchmal wiederholt.

Ex: 1 Aktualisierung: John D

2 Aktualisierung: John X

3 Aktualisierung: John A

4 refresh: John D

So ist die Ausgabe ich will, ist, dass es sollte Reihe in Reihenfolge holen, ohne anyrow mehrmals zu wiederholen;

1 Refresh: John A

2 Refresh: John C

3 Refresh: John D

4 refresh: John T

5 refresh: John X

6 Aktualisieren: John A

7 Aktualisieren: John C

8 Aktualisierung: John D

9 Refresh: John T

10 refresh: John X

+0

Das erwartete Ergebnis ist einfach Bestellung (Paging mit Seitengröße auf 1 gesetzt). Warum verwenden Sie eine zufällige Auswahl, wenn Sie einfache Bestellung wünschen? Lassen Sie mich klarstellen: Wenn Datensätze in einer vorgegebenen Reihenfolge erscheinen, ist die Auswahl nicht mehr zufällig. Deine zwei Kriterien widersprechen sich. – Shadow

+0

Wenn ich die Reihenfolge auf ASC/DESC einstelle, wird dieselbe Zeile bei jeder Seitenaktualisierung abgerufen. –

+1

Weil Sie nicht speichern, welche Zeile zuvor angezeigt wurde. Sie müssen das in Ihrer Sitzung speichern und das nächste anzeigen, indem Sie die Klausel 'limit $ x, 1' in Ihrem Browser verwenden. – Shadow

Antwort

-1

Sie könnten hier finden für sorting die Abfragen

SELECT column-list 
FROM table_name 
[WHERE condition] 
[ORDER BY column1, column2, .. columnN] [ASC | DESC]; 
+0

Kein OP möchte bei jeder Seitenaktualisierung einen zufälligen Benutzernamen erhalten, ohne dass jemand wiederholt wird. –

+0

Nun, ich denke, er kann 'RAND()' und '[ASC | kombinieren DESC] 'haha – Swellar

+0

@prakashtank Sie haben Recht Ich möchte eine Zeile bei jeder Aktualisierung abrufen, aber in Reihenfolge, ohne jemanden zu wiederholen –

Verwandte Themen