web-dev-qa-db-ja.com

MYSQLテーブルから選択し、テーブルの最新/最後の10行を取得します

これを行うための最良かつ最も簡単な方法は何ですか?私のクエリは現在:

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

ただし、これは最後の10行ではなく、最初の10行を示しています。

編集:最後の10行が必要です(はい、DESCがこれを行います)ただし、昇順で返されるようにします。

11
Dylan Cross

順序を逆にするには(したがって、最初の10ではなく最後の10を取得します)、DESCの代わりにASCを使用します

[〜#〜]編集[〜#〜]

あなたのコメントに基づく:

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

最後の10が必要な場合は、ASCを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";

まず、制限を設定しました

$limit = 10;

その後

 $total_rows = mysqli_num_rows($resource);

ここでは、影響を受けた行の総数を取得しました。

$start = $total_rows-$limit;

次に、行数から制限を差し引いて、開始レコード番号を取得します

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

次に、クエリに制限を追加しました。制限の詳細については、このリンクを参照してください https://www.w3schools.com/php/php_mysql_select_limit.asp

0
mohitesachin217

最初にテーブルから最後の10を選択し、次にそれらを昇順で並べ替えます。

SELECT * FROM (SELECT * FROM table ORDER BY id DESC LIMIT 10) sub ORDER BY id ASC
0
Baz