2017-06-22 5 views
0

Ich war gerade im Interview gestern. und Interviewer fragte mich eine Frage, wie können wir bestimmte Zeilennummer Wert zeigen ... zum Beispiel gibt es eine Tabelle mit 1000 Rekord und wir müssen nur 50 Nummer Reihe bekommen. Ich erzählte ihm von Looping, aber sie sagten, es sei keine gute Idee. Wir müssen nur diese Reihe bekommen. Ich habe viel darüber gesucht, aber noch keine Antwort bekommen. Ich erwarte vom Stack-Überlauf, dass ich die Antwort bekommen kann. was ich versucht habe, ist dies.Wie bekomme ich die genaue Zeilennummer aus der Tabelle

$list=mysql_query("SELECT id FROM table_name"); 
$count=1; 
while($row=mysql_fetch_array($list)) 
{ 
    if($count==50) 
    { 
     $found_id=$row['id']; 
    } 
    $count++; 
} 
echo "id of 50 number row is ".$found_id; 
+0

Es ist nicht klar, ob Sie versuchen, 50 Zeilen zu erhalten, oder wenn Sie versuchen, Zeile 50 zu bekommen. Einer ist ein Limit, der andere ist eine Where-Klausel. – mkaatman

+0

Sie verwenden Datenbankfunktionen, die ein Jahrzehnt veraltet sind. Sie existieren nicht in modernen PHP-Versionen. Verwenden Sie stattdessen PDO. – miken32

Antwort

4

Sie können es von direkt erhalten Abfrage

SELECT id FROM table_name LIMIT 1 OFFSET 50 

Es wird nur Rückkehr 50 Anzahl der Reihe.

+0

können Sie dies auch @negative tun –

1

SQL-Tabellen sind nicht geordnet, so dass Sie immer angeben müssen eine ORDER BY: eine andere Zeile keine Bedeutung

select id from table_name order by id 

sonst bekommen die n-te Zeile aus einem ungeordneten Tisch und könnten möglicherweise zurückkehren jedes Mal. Dann können Sie LIMIT offset, rowcount verwenden (Offset 0-basiert):

select id 
from table_name 
order by id 
limit 49, 1 
0

Nicht ganz sicher, dass aber

SELECT TOP(50) 

könnte auch für Ihre Zwecke arbeiten.

Verwandte Themen