2012-02-24 34 views
9

これを行うための最も簡単で簡単な方法は何ですか?私のクエリは現在、次のとおりです。MYSQLテーブルから選択、テーブルの最新の/最後の10行を取得

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

はこれが最後ではない10.

EDIT、しかし最初の10行を示しています。私は最後の10行が欲しい(DESCがこれを行うどのはい、)私はそれらをしたいしかし、 ASCENDINGの順番で返されます。

+0

データベースで** sort **オプションを使用してください。 – user631756

答えて

20

代わりにあなたのコメントに基づいてASC

EDIT

DESCを使用して、(それゆえ得る最後の10の代わりに、最初の10)の順序を逆にする:あなたがしたい場合

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 
+1

私は私の質問に含めることを忘れて、私は最後の10行(はい、DESCを使用して)が、Ascの順序でしたい。 –

+0

ありがとうございます。 –

+0

これは古い投稿ですが、これは私が探していたものです。ありがとう:) –

1

最後の10はASCをDESCに変更する

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

私の質問に、最後の10を含めることを忘れてしまった(はい、DESCで行うことができますが、ASCの順序で。 –

0
$limit = 10;     
$gt_query= "SELECT * FROM $table "; 
       $gt_res_query = mysql_query($gt_query,$this->gt_con_puneri) or die(mysql_error()); 
       $gt_total_rows = mysql_num_rows($gt_res_query); 
       $start = $gt_total_rows-$limit; 
       $gt_query_limit= $gt_query." LIMIT $start,$limit"; 

まず私が影響を受けた行の合計数をとって、その後

ここ
$gt_total_rows = mysql_num_rows($gt_res_query); 

を制限

$limit = 10; 

を設定しています。

$start = $gt_total_rows-$limit; 

は、レコード番号

$gt_query_limit= $gt_query." LIMIT $start,$limit"; 

出発取る行数から上限を引き算した後、クエリに制限を加えました。 制限についての詳細は、 https://www.w3schools.com/php/php_mysql_select_limit.asp

+0

説明なしのコードダンプはめったに役に立ちません。 – Chris

+0

フィルタがあると問題が発生する可能性があります。一部のデータは無視されます。 – Asuquo12

+0

@Chris大丈夫ですか?回答に少し説明が追加されました。 – mohitesachin217

関連する問題