これを行うための最良かつ最も簡単な方法は何ですか?私のクエリは現在:
SELECT *
FROM chat
WHERE (userID = $session AND toID = $friendID)
OR (userID = $friendID AND toID = $session)
ORDER BY id
LIMIT 10
ただし、これは最後の10行ではなく、最初の10行を示しています。
編集:最後の10行が必要です(はい、DESCがこれを行います)ただし、昇順で返されるようにします。
順序を逆にするには(したがって、最初の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
最後の10が必要な場合は、ASCをDESCに変更するだけです。
SELECT *
FROM
chat
WHERE
(userID=$session AND toID=$friendID)
OR
(userID=$friendID AND toID=$session)
ORDER BY id
DESC
LIMIT 10
$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
最初にテーブルから最後の10を選択し、次にそれらを昇順で並べ替えます。
SELECT * FROM (SELECT * FROM table ORDER BY id DESC LIMIT 10) sub ORDER BY id ASC