반응형
mysql 랜덤 정수 범위를 가져오려면 어떻게 해야 합니까?
타이머로 선택한 각 행에 대해 랜덤 정수를 생성하려고 합니다.
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
질문을 실행 중인데 각 행에 대해 랜덤한 번호가 표시됩니다.랜덤(타이머)의 이름과 관련이 있는 것은 아닐까요?
오래된 질문이지만 항상 실제 문제죠
MySQL 함수를 만드는 방법random_integer()
매뉴얼에 의거하여:
CREATE FUNCTION random_integer(value_minimum INT, value_maximum INT)
RETURNS INT
COMMENT 'Gets a random integer between value_minimum and value_maximum, bounds included'
RETURN FLOOR(value_minimum + RAND() * (value_maximum - value_minimum + 1));
SELECT ALL random_integer(1, 60) AS timer;
테이블 내의 레코드 수에 곱한 값을 늘릴 수 있습니다.
SELECT id,
(FLOOR( (SELECT MIN(id) FROM your_table ) + RAND( ) * 1000000 ) ) AS timer
FROM your_table
LIMIT 0 , 30
언급URL : https://stackoverflow.com/questions/984396/how-to-get-mysql-random-integer-range
반응형
'programing' 카테고리의 다른 글
Eclipse에서 Tomcat을 시작할 때 "SetPropertiesRule" 경고 메시지 (0) | 2022.11.23 |
---|---|
Flask Web App 도킹 후 정기적인 "쿼리 중 MySQL 서버 연결 끊김" (0) | 2022.11.23 |
{this.props.children}에게 소품을 전달하는 방법 (0) | 2022.11.23 |
변수 선언에 'var'를 사용하는 것은 옵션입니까? (0) | 2022.11.23 |
분배, 디스트리뷰트, 세트툴 및 디스트리뷰트2의 차이점 (0) | 2022.11.23 |