webentwicklung-frage-antwort-db.com.de

MYSQL Wählen Sie aus der Tabelle aus, erhalten Sie die neuesten/letzten 10 Zeilen in der Tabelle

Was ist der beste und einfachste Weg, dies zu tun? Meine Anfrage lautet derzeit:

  SELECT * 
    FROM chat 
   WHERE (userID = $session AND toID = $friendID) 
      OR (userID = $friendID AND toID = $session) 
ORDER BY id 
   LIMIT 10

Dies zeigt jedoch die ersten 10 Reihen, nicht die letzten 10.

BEARBEITEN: Ich möchte die letzten 10 Zeilen.

11
Dylan Cross

um die Reihenfolge umzukehren (also die letzten 10 statt der ersten 10 zu erhalten), verwenden Sie DESC anstelle von ASC

EDIT

Basierend auf Ihrem Kommentar:

SELECT * FROM (
  SELECT * 
  FROM chat 
  WHERE (userID = $session AND toID = $friendID) 
    OR (userID = $friendID AND toID = $session)  
  ORDER BY id DESC
  LIMIT 10
) AS `table` ORDER by id ASC
24
SimonMayer

Wenn Sie die letzten 10 wollen, ändern Sie einfach ASC in DESC

SELECT * 
FROM 
chat 
WHERE 
(userID=$session AND toID=$friendID) 
OR 
(userID=$friendID AND toID=$session) 
ORDER BY id 
DESC
LIMIT 10
1
romainberger
                $con = mysqli_connect("localhost","my_user","my_password","my_db");
                $limit = 10;                
                $query = "SELECT * FROM  $table";
                $resource = mysqli_query($con,$query);
                $total_rows = mysqli_num_rows($resource);
                $start = $total_rows-$limit;
                $query_limit= $query." LIMIT $start,$limit";

Zuerst habe ich das Limit festgelegt

$limit = 10;

dann 

 $total_rows = mysqli_num_rows($resource);

Hier habe ich die Gesamtzahl der betroffenen Zeilen genommen.

$start = $total_rows-$limit;

dann wird das Limit von der Anzahl der Zeilen abgezogen, um die Nummer des Startsatzes zu übernehmen

   $query_limit= $query." LIMIT $start,$limit";

und fügte dann der Abfrage Grenzwert hinzu. Weitere Informationen zu Grenzwerten finden Sie unter diesem Link https://www.w3schools.com/php/php_mysql_select_limit.asp

0
mohitesachin217