0

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

ads_man テーブル構造

列「回転」が1の場合、このテーブルから行をランダムに選択したいのですが、そうでない場合、回転= 0の場合、これらの行をランダムに選択するべきではありません。私はこれを試しました;

$query = $db->query("
    SELECT type,place,code
    FROM ads_man
    WHERE approved = '1' AND fid = '{$fid}' AND place = '{$zone}'
    ORDER BY RAND()
    LIMIT 3");

行をランダムに選択しますが、別のクエリを使用して、rotate = 1 を持つすべての行を検索し、上記のクエリで使用するのではなく、これらの行を選択する簡単な方法を見つけることができないという問題があります。ORDER BY RAND()

助けてください!

4

4 に答える 4

3
$query = $db->query("
    SELECT type,place,code
    FROM ads_man
    WHERE rotate='1' AND approved = '1' AND fid = '{$fid}' AND place = '{$zone}'
    ORDER BY RAND()
    LIMIT 3");
于 2013-10-17T06:31:10.380 に答える
2

これを行うにはいくつかの方法があります。

何が必要かはあまり明確ではありませんが、rotate = 1ランダムに選択された3行が必要な場合は、他の行(たとえば7行)が必要なrotate = 0場合は、UNION

(SELECT type,place,code
    FROM ads_man
    WHERE rotate = 1 AND approved = '1' AND fid = '{$fid}' AND place = '{$zone}'
    ORDER BY RAND()
    LIMIT 3)
UNION
(SELECT type,place,code
    FROM ads_man
    WHERE rotate = 0 AND approved = '1' AND fid = '{$fid}' AND place = '{$zone}'
    LIMIT 7)

これはあなたが必要とするものですか?そうでない場合はお知らせください

編集:括弧を忘れた

于 2013-10-17T06:35:15.243 に答える
0

ALTER与えられたテーブルのステートメントごとに乱数列を追加する方が良いと思います。それは多くの時間を節約します。

于 2013-10-17T06:33:37.717 に答える