2012-02-17 14 views
3

私の現在の方法では、私はをSQLクエリで使用し、back resultsを新しい配列として設定し、phpによってidで配列をソートします。日付によるmysqlの注文10の結果を取得してから再度IDで注文

私がお願いしたい
SELECT * FROM table 
WHERE 
(
MATCH (title,content) 
AGAINST ('+$search' IN BOOLEAN MODE) 
) 
order by date DESC 
limit 0,10 

は、SQLメソッド、最初order by dateはありjust in one sql query、再びorder by id、これらの10件の結果に当時10結果を得ますか?

+1

ORDER BY column1、column2 – davidjwest

+0

@ davidjwest:私が正しく理解していれば、彼はしません。あなたの質問では、 'column2'は' column1'が同じ場合にのみ関連します。 OPは、トップ10の日付を選択し、その後、 'id'(日付を無視する)によって* resort *する。 – Amadan

+0

お待ちください、あなたは日付で注文し、その後IDを日付で注文しますか?編集@Amadan:thats私が考えたこと – ChrisPatrick

答えて

10

現在のクエリの外側のクエリをラップします。

SELECT q.* 
    FROM (SELECT * FROM table 
      WHERE 
      (
      MATCH (title,content) 
      AGAINST ('+$search' IN BOOLEAN MODE) 
     ) 
      order by date DESC 
      limit 0,10) q 
    ORDER BY q.id 
+0

私は彼が両方で並べ替えではなくむしろ**リゾート** **したいと思う_think_。 – ChrisPatrick

+0

@ChrisPatrick:それはちょうど外側の 'ORDER BY q.id'がするものです。 – Amadan

+0

スクラッチ、私は完全に疑問を誤解しました。 – ChrisPatrick

0

これはうまくいくかもしれない:

SELECT * FROM (
    SELECT * FROM table 
    WHERE ... 
    ORDER BY date DESC 
    LIMIT 10 
) 
ORDER BY id 
0

するだけで注文する別の列が続くコンマを置く:FROM table_nameをSELECT column_nameに(S) :私はあなたがこれを意味だと思う

SELECT * FROM table 
WHERE 
(MATCH (title,content) 
AGAINST ('+$search' IN BOOLEAN MODE)) 
order by date, id DESC 
limit 0,10 
関連する問題