2016-04-01 12 views
0

私は正確に6つのランダムなエンターテインメントエントリを表示しようとしていますが、現在のクエリでは1から6までの乱数が得られ、記事テーブルからランダムに6つのエンターテインメントエントリを正確に表示するために、このクエリを更新するにはどうすればよいですか?ここに私の現在のクエリです:次のようにテーブルから正確に6つのランダムなエントリを表示

SELECT 
    r1.* 
FROM 
    Articles AS r1 
    INNER JOIN (SELECT(RAND() * (SELECT MAX(id) FROM Articles)) AS id) AS r2 
WHERE 
    r1.id >= r2.id 
    AND r1.category = 'entertainment' 
LIMIT 6; 

テーブルの構造は次のとおりです。

table Articles 
- id (int) 
- category (varchar) 
- title (varchar) 
- image (varchar) 
- link (varchar) 
- Counter (int) 
- dateStamp (datetime) 
+0

あなたは、あなたのテーブル構造を理解することができますか?関連する列は何か、 'r1'表は何を表していますか? – Pevara

+0

@Pevara記事テーブルには7つの列があります。 ID(ユニーク)、カテゴリ(記事のカテゴリ、エンターテインメント)、タイトル(記事のタイトル)、画像(記事の画像URL)、リンク(記事のURL)、カウンター記事が持っているビュー)、dateStamp(記事が公開された日付)。 – user2896120

答えて

1

試してみてください。

SELECT 
    r1.* 
FROM 
    Articles AS r1 
WHERE 
    r1.category = 'entertainment' 
ORDER BY RAND() 
LIMIT 6; 

私はそれはあなたがあなたのサブクエリで試してみました何だと思いますか?

+0

私はORDER BY RAND()を使用しないでください。パフォーマンスが非効率であるため – user2896120

+0

http://stackoverflow.com/questions/6541644/selecting-random-rows-with-mysql/6542113#6542113を試しましたか? – Tom

+0

'ORDER BY RAND()'は実際には拡張されませんが、何千もの記事があると思わない限り、その影響は無視できるものと思われます。そして、私は可能な限り簡単に物事を維持するのが大好きです... – Pevara