私は自分のフォト ギャラリーに取り組んでおり、Wilson スコア間隔でメディアを並べ替えるフィルターを持っています。このスコアは、私のテーブルのフィールドに保存されますscore
このクエリでは、次のフィールドを使用します: id
, UploadTime
,score
私が抱えている問題は、複数の写真に親指が 1 つしかない場合、いくつかのスコアがまったく同じになることです。その場合、UploadDate フィールドでメディアを並べ替えて、古い画像の関連性を低くしたいと考えています。
これは、すべての写真を整理するためのスクリプトです (リストに入るには、スコアが 0 よりも高くなければならないことに注意してください)。
SELECT *
FROM photos
WHERE status = 0
AND score > 0
ORDER BY score DESC, id DESC
次に、次の画像を取得します (次の画像はスコアが低い画像です。スコアが等しい場合は、アップロードされた最新の画像が出力されます)。$id は現在の画像の一意の ID です
SELECT *
FROM photos p
INNER JOIN
(
SELECT score, id
FROM photos
WHERE id = ".$id."
) p2 ON p.score < p2.score
WHERE p.status = 0 AND p.net_votes > 0
ORDER BY p.score DESC, p.UploadTime DESC
LIMIT 1
これを行う方法についてのすべてのアイデアを使い果たしました。