1

簡単な MySQL ステートメントを使用して、クリックでソートされた製品の提案を DB に照会しています。

SELECT * FROM suggestions WHERE source = :source_item_id ORDER BY clicks DESC LIMIT 7

それはすべて期待どおりに機能します。ただし、クリック数が同じ場合、MySQL にランダムに吐き出すように指示する方法はありますか?

例:

Product  Clicks
1        2
2        2
3        3

照会した場合、順序は 3、2、1 であり、クリック数が変わらない場合は常にこの順序になります。それぞれ w 回のクリックがある製品 1 と 2 をランダム化するにはどうすればよいですか? 時々、結果を交換したい、つまり 3, 1, 2 にして、次回は 3, 2, 1 にする.

4

2 に答える 2

3

ランダムな値を持つ列を追加し、その上に2次ソートを設定するのはどうですか?

SELECT product, clicks, RAND() AS rand 
FROM suggestions 
WHERE source = :source_item_id 
ORDER BY clicks, rand 
DESC 
LIMIT 7
于 2012-08-26T00:18:35.863 に答える
0

なぜだめですか...

SELECT product, clicks
FROM suggestions 
WHERE source = :source_item_id 
ORDER BY clicks DESC, RAND()
LIMIT 7

...?

于 2015-09-24T13:30:08.573 に答える