2011-12-19 20 views
4

私はイベントという名前のmysqlテーブルを持っています。いくつかのイベントが紹介されています。最新の2つのイベントの1つをランダムに表示したい。フィールド 'timestamp'は、イベントの作成時刻のUNIXタイムスタンプを保持します。mysqlのランダムな結果を表示

クエリは次のようになります。

$query = "SELECT * FROM events WHERE featured = 1 ORDER BY timestamp DESC LIMIT 2;"; 

ちょうどこれら二つのイベントのうちの1つを返し、すぐにそれを表示するには、クエリを構文に方法はありますか、私はPHPとその周りに行くべき?

ここで推奨するものは何ですか?

答えて

13

ORDER BY RAND() LIMIT 1;MySQL documentation for RAND()(説明の末尾付近)として使用してください。ネストされていないテーブルを2行しか持たないので、ネストされていないテーブルはできません。

SELECT * FROM 
    (SELECT * FROM events WHERE featured = 1 ORDER BY timestamp DESC LIMIT 2) 
ORDER BY RAND() LIMIT 1; 
+0

は、クエリ内でそのクエリのですか? – ppp

+0

@AnPelはい、いわゆるサブクエリです。 – middus

+1

それから私はそれを開始スタイルにします。あなたの時間はTYです。 – ppp

0

試してみてください。

SELECT * FROM 
    (SELECT * FROM EVENTS WHERE featured = 1 ORDER BY `timestamp` DESC LIMIT 2) AS temp 
ORDER BY RAND() LIMIT 1 
+0

ありがとう、これは正解でした。もう1つは詳細な情報を含んでいたので、私はそれを修正しました。 – ppp