2016-07-03 11 views
1

にのみ5ランダムな行を選択して、私はちょうどので、私ができる私はのみ5 ランダム行私のデータベースの最後の50のエントリを選択方法を知りたいのMySQLを始めていますか?あなたが私の質問を理解することを願っています最後の50のエントリ

私はPDOを使用していますし、私が今持っていることはこれです:

$otherChoiseRig = $bdd->query("SELECT * FROM articulos WHERE cat = '$ArtCat' ORDER BY RAND() "); 
$otherChoiseRig2 = $otherChoiseRig->fetchAll(PDO::FETCH_ASSOC); 

は、その後、私はPHPのforeachのブークレを使用して...

だけの制限を追加し、あなたに

+0

テーブル全体でランダムな5行が必要ですか? –

+0

はい、ただし、50個のエントリのみです。 – Boris

+0

すべてのテーブルのテーブル構造が類似しているかどうかを確認しますか? –

答えて

2

最後の50エントリを決定するのは難しいことです。

SELECT a.* 
FROM (SELECT a.* 
     FROM articulos a 
     WHERE cat = '$ArtCat' 
     ORDER BY id DESC 
     LIMIT 50 
    ) a 
ORDER BY RAND() 
LIMIT 5; 

キーアイデアは、最後の50の項目を取得するには、サブクエリで、その後、最終的にクエリが5つのランダムな行を取得する:あなたは自動インクリメントのIDを持っていると仮定すると、あなたが行うことができます。サブクエリは最後の50の識別方法を指定する必要があります。

+0

ありがとう..しかし、何ですか? – Boris

+0

@Borisエイリアスと呼ばれています。 http://dev.mysql.com/doc/refman/5.7/en/problems-with-alias.html - http://dev.mysql.com/doc/refman/5.7/en/select.html –

+0

@ボリスはゴードンに尋ねる。彼の答えです。 –

0

ありがとう

あなたのテーブルには日付の列があるので、最後に50を得ることができます。

SELECT * FROM(SELECT * FROM articulos where cat = '$ ArtCat' ORDER BY created_tiem desc limit 50)t順序RAND()の制限5;

+0

これはすべてのデータベース上で5つのランを選択します – Boris

+0

私はあなたが最後の50の注文を得るためにcreated_timeか何らかの列を持っていると仮定します –

0
$otherChoiseRig = $bdd->query("SELECT * FROM articulos WHERE cat = '$ArtCat' ORDER BY RAND() LIMIT 5 "); 
$otherChoiseRig2 = $otherChoiseRig->fetchAll(PDO::FETCH_ASSOC); 
関連する問題