私はちょうどポストに最新の3コメントを選択し、それらをASC順に並べ替えたい。MYSQL最後の3行を選択、ASCでオーダー
これが最後の3行を選択しますが、しかし、私は逆の順序でそれらを必要とする:
mysql_query("
SELECT * FROM comments WHERE postID='$id' AND state='0' ORDER BY id DESC LIMIT 3")
私はちょうどポストに最新の3コメントを選択し、それらをASC順に並べ替えたい。MYSQL最後の3行を選択、ASCでオーダー
これが最後の3行を選択しますが、しかし、私は逆の順序でそれらを必要とする:
mysql_query("
SELECT * FROM comments WHERE postID='$id' AND state='0' ORDER BY id DESC LIMIT 3")
あなたは、後でソートそれを逆にすることができます。
SELECT *
FROM (SELECT * FROM comments
WHERE postID='$id'
AND state='0'
ORDER BY id DESC
LIMIT 3) t
ORDER BY id ASC;
これは単に、結果セットを逆方向に反復することにより、SQLクエリを変更せずに、単にPHPでもを行うことができます。
$res = mysql_query(...);
for($i=mysql_num_rows($res)-1; $i>=0; $i--) {
//do whatever
}
私はパフォーマンスの違いがあるかわからない告白します(もしあれば)、それはあなただけのスイートかもしれない別のオプションです。
私はこの方法を好む、私は3つの最新のものを選択し、最も古いものを最初に出力する考えを分けていると思う(少なくとも私の考えでは:p) –
できるだけ多くの作業をサーバー上で(データベース内で)できるようにし、ユーザー側でこれを(phpを使って)行う必要はありませんが、私はあなたの答えに感謝します。 –
私はそれが本当に好みの問題になると思います。私は通常SQLでできるだけ多くのことをするのが好きですが、時にはコードを混乱させることがありますが、PHPははるかに読みやすく分かりやすいですが、IMHOでは逆順に反復するとコード内で実際に何が起こっているかがはっきり分かります。 – cegfault
$result = mysqli_query($con,"SELECT * FROM (SELECT * FROM messeges WHERE username='{$_SESSION['username']}' ORDER BY id DESC LIMIT 3) t ORDER BY id ASC");
コードのみの回答はSOの読者を教育するのにはほとんど役に立ちません。あなたの答えを編集して説明を加えてください。あなたの回答は低品質とフラグが立てられているため、モデレーションキューにあります。 (...あなたのコードをフォーマットしてください) – mickmackusa
完全に感謝します。 –
*を使用することはお勧めできません。すべての項目に言及するのがより速いです。 – Porizm