Ответ 1
Это работает для меня. Возможно, ваша версия mysql?
SELECT id, (FLOOR( 1 + RAND( ) *60 )) AS timer
FROM users
LIMIT 0 , 30
Я пытаюсь создать случайное целое число для каждой строки. Я выбираю от 1 до 60 как таймер.
SELECT downloads.date, products.*, (FLOOR(1 + RAND() * 60)) AS timer
Я искал и продолжаю приближаться к этой функции FLOOR, чтобы выбрать случайное целое число в диапазоне. Это дает мне по 1 для каждой строки. Что мне не хватает?
Я на mysql 5.0.75
Вот оставшаяся часть запроса, я полагаю, это может быть проблема с вложением
SELECT *
FROM (
SELECT downloads.date, products.*, FLOOR(1 + (RAND() * 60)) AS randomtimer,
(
SELECT COUNT( * )
FROM distros
WHERE distros.product_id = products.product_id
) AS distro_count,
(SELECT COUNT(*) FROM downloads WHERE downloads.product_id = products.product_id) AS true_downloads
FROM downloads
INNER JOIN products ON downloads.product_id = downloads.product_id
) AS count_table
WHERE count_table.distro_count > 0
AND count_table.active = 1
ORDER BY count_table.randomtimer , count_table.date DESC LIMIT 10
Это работает для меня. Возможно, ваша версия mysql?
SELECT id, (FLOOR( 1 + RAND( ) *60 )) AS timer
FROM users
LIMIT 0 , 30
Я выполняю ваш запрос, и это дает мне случайное число для каждой строки.... возможно, имеет какое-то отношение к имени случайного (таймер)?
Вывод функции RAND
всегда будет иметь значение между 0 и 1.
Попробуйте следующее:
SELECT downloads.date, products.*, (CAST(RAND() * 60 AS UNSIGNED) + 1) AS timer
Вы можете увеличить число, умноженное на количество записей в таблице.
SELECT id,
(FLOOR( (SELECT MIN(id) FROM your_table ) + RAND( ) * 1000000 ) ) AS timer
FROM your_table
LIMIT 0 , 30