2011-09-12 4 views
0

私は最後の10行を選択したいですが、注文は昇順のみにしてください。MySqlは注文を乱すことなく最後の10行を選択します

フォーラムの最後のページを表示しても、その投稿は正しい順序で並べられています。

私はこの

SELECT users.display,appreply.*,users.userid,users.avtar FROM appreply 
    LEFT JOIN users ON users.userid=appreply.userid 
    WHERE appreply.appid='$appid' 
    ORDER by apprepid DESC 
    LIMIT 10 

を実行しようとしましたが、私は言ったように、これは秩序を乱します。

答えて

1

は通常、「ID」である、あなたがテーブルで自動インクリメントフィールドを持つかもしれない

SELECT X.* FROM 
(
SELECT users.display,a.apprepid apprepid_ar, a.appid appid_ar, a.reply reply_ar, a.userid userid_ar, a.browser browser_ar, a.os os_ar, a.time time_ar,users.userid,users.avtar FROM appreply a 
LEFT JOIN users ON users.userid=a.userid 
WHERE a.appid='$appid' 
ORDER by a.apprepid DESC 
LIMIT 10 
) X ORDER BY X.apprepid_ar ASC 
+0

エラー: 代わりapprepidフィールド上DESC演算子を使用するのでは、とIdフィールドを使用するすべての派生テーブルは、独自のエイリアス – kritya

+0

を持っている必要がありますこの問題が発生しただけappreply'と ''でいくつかの列(複数可)ので、ユーザー名は同じです...すべての列名を指定してください...それに応じてクエリを変更することができます... – Yahia

+0

k wait。 U両方のテーブル 'users'と' appreply' rtのすべてのカラムを必要としますか? – kritya

-1

を試してみてください、私を助けてください。

SELECT users.display,appreply.*,users.userid,users.avtar FROM appreply 
    LEFT JOIN users ON users.userid=appreply.userid 
    WHERE appreply.appid='$appid' 
    **ORDER by id DESC** 
    LIMIT 10 ORDER BY apprepid ASC 
+0

何が変わったのですか? :Oあなたはどうか説明できますか?ありがとう – kritya

+0

第4回目に変更された部分。行は星で強調表示されます。フィールド 'apprepid'を 'id'に変更しました。あなたのテーブルにはデフォルトの自動インクリメントフィールドが 'Id'として存在しなければなりません。ご迷惑をおかけして申し訳ありません – venomrld

関連する問題