web-dev-qa-db-fra.com

MYSQL Sélectionner dans la table, obtenir les 10 dernières/dernières lignes de la table

Quelle est la meilleure et la plus simple façon de procéder? Ma requête est actuellement:

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

Cela montre les 10 premières lignes, pas les 10 dernières.

EDIT: Je veux les 10 dernières lignes (ce qui, oui, DESC le fait) Cependant, je veux qu'elles soient retournées dans l'ordre ASCENDING.

11
Dylan Cross

pour inverser l'ordre (donc obtenir les 10 derniers au lieu des 10 premiers), utilisez DESC au lieu de ASC

MODIFIER

Basé sur votre commentaire:

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

Si vous voulez les 10 derniers, changez simplement ASC en 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";

D'abord j'ai fixé la limite

$limit = 10;

puis 

 $total_rows = mysqli_num_rows($resource);

Ici, j'ai pris le nombre total de lignes affectées.

$start = $total_rows-$limit;

puis soustrayez la limite du nombre de lignes pour prendre le numéro d'enregistrement de départ

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

et ensuite ajouté limit à la requête. Pour plus d'informations sur limit, voir ce lien https://www.w3schools.com/php/php_mysql_select_limit.asp

0
mohitesachin217