3

私はこれを助けるために何かを見つけようとしましたが、運がありません。

値が1〜4の列「slide_no」があります。スライド番号ごとに異なるslide_noの順序でデータベースからすべてを選択したいのですが、ランダムに選択された画像を表示します。

データベーステーブル

slide_id | slide_name | slide_no | fk_project_id
  1 | pic1.jpg | 1 | 2
  2 | pic2.jpg | 3 | 4
  3 | pic3.jpg | 2 | 3
  4 | pic4.jpg | 4 | 1
  5 | pic5.jpg | 2 | 6
  6 | pic6.jpg | 3 | 5

ご覧のとおり、slide_noは一意である必要はなく、ページの読み込みごとにランダムな画像を表示できるようにしたいと思います。これまでのところ、最初の4つの画像を取得するクエリを作成することしかできませんでした。

slide_noで注文して、異なる(slide_noで注文された)画像を含むランダムな画像を取得することは可能ですか?

前もって感謝します。

4

4 に答える 4

4

MySQLはこれを提供ORDER BY RAND()します。

ORDER BY RAND()と組み合わせるとLIMIT、一連の行からランダムなサンプルを選択するのに役立ちます。

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

SELECT *
FROM ( SELECT *
    FROM `tblName`
    GROUP BY slide_no 
    ORDER BY RAND()
) `tempTable`
ORDER BY slide_no ASC
于 2013-03-26T16:01:46.873 に答える
2

毎回1つのランダムIDを探すだけなら、このようなことを試すことができます。

SELECT slide_id
FROM {table_name} 
ORDER BY RAND()
LIMIT 1;
于 2013-03-26T15:58:19.703 に答える
1

実例:

http://www.sqlfiddle.com/#!2/0664c/8

Select slide_name, slide_no From
(SELECT *
FROM ( SELECT *
    FROM tableName
    GROUP BY slide_no, slide_name 
    ORDER BY RAND()
) `tempTable`
 ) x
Group by slide_no
ORDER BY slide_no ASC
limit 4
于 2013-03-26T15:57:59.183 に答える
0
SELECT slide_no
, ( SELECT TOP 1 slide_name 
    FROM #tmp T2 
    WHERE T2.slide_no = T1.slide_no     
    ORDER BY RAND() --You can place other logic to "randomize" here in the future
   )
FROM #tmp T1
GROUP BY slide_no;

これがあなたが探しているものをあなたに与えるかどうかはわかりません。問題は、同じシード値でRAND()を繰り返し呼び出すと、同じ結果が返されることです。それを本当にランダムにしたいのなら、それ自体が別の質問です。SQLで乱数を生成する方法については、こちらを参照してください。

于 2013-03-26T16:02:42.497 に答える