, если вам нужно больше уникального, вы должны сгенерировать массив (1..100).
var arr=[];
function generateRandoms(){
for(var i=1;i<=100;i++) arr.push(i);
}
function extractUniqueRandom()
{
if (arr.length==0) generateRandoms();
var randIndex=Math.floor(arr.length*Math.random());
var result=arr[randIndex];
arr.splice(randIndex,1);
return result;
}
function extractUniqueRandomArray(n)
{
var resultArr=[];
for(var i=0;i<n;i++) resultArr.push(extractUniqueRandom());
return resultArr;
}
выше код быстрее: extractUniqueRandomArray (50) => [2, 79, 38, 59, 63, 42, 52, 22, 78, 50, 39, 77, 1, 88, 40, 23, 48, 84, 91, 49, 4, 54, 93, 36, 100, 82, 62, 41, 89, 12, 24, 31, 86, 92, 64, 75, 70, 61, 67, 98, 76, 80, 56, 90, 83, 44, 43, 47, 7, 53]
Рассмотрим обновление внутреннего объединения через три самостоятельных объединения:
UPDATE " . POSTS_TABLE . " AS final
INNER JOIN " . POSTS_TABLE . " AS p
ON p.poster_id = final.poster_id
AND p.topic_id = final.topic_id
AND p.topic_id = $topic_id
AND p.post_id NOT IN ($merged_post_list)
AND p.anonymous_index > 0
INNER JOIN " . POSTS_TABLE . " AS merged
ON merged.poster_id = p.poster_id
AND merged.topic_id = p.topic_id
AND merged.topic_id = $topic_id
AND merged.post_id IN ($merged_post_list)
AND merged.anonymous_index > 0
SET final.anonymous_index = p.anonymous_index
WHERE final.anonymous_index > 0
AND final.anonymous_index <> p.anonymous_index