MySQLデータベースから画像データを取得するランダムな画像バナーを作成したいと思います。そして、最新の3つのレコードのみをランダムにフェッチしたいと思います。
最新の3つのレコードをランダムな順序で取得するにはどうすればよいですか?
私は次のクエリです:
SELECT * FROM bottom_advt WHERE bottom_advt_page_name='News' ORDER BY RAND() LIMIT 1
しかし、それは機能していません。
あなたは3つのレコードを言いました。だから試してください:
SELECT * FROM bottom_advt WHERE bottom_advt_page_name='News' ORDER BY RAND() LIMIT 3
結果を の 1 つに制限していますLIMIT 1
。に変更してLIMIT 3
、3 つの結果を取得します。
最後の 3 つのレコードのいずれかが必要な場合は、これを試してください。
SELECT * FROM bottom_advt WHERE bottom_advt_page_name='News' AND id+3>last_insert_id() ORDER BY RAND() LIMIT 1
これを使用できます:
SELECT *
FROM bottom_advt
WHERE ID IN (SELECT * FROM (
SELECT id
FROM bottom_advt
WHERE bottom_advt_page_name='News'
ORDER BY id DESC
LIMIT 3) last)
ORDER BY RAND()
LIMIT 1
サブクエリは を持つ最後の 3 つの ID を返し、bottom_advt_page_name='News'
外側のクエリはそれらの 1 つをランダムに選択します。
ここでフィドルを参照してください。