[SQL] MySQL의에서 임의의 행을 선택
SQLMySQL의에서 임의의 행을 선택
나는 퀴즈 웹 사이트를 개발하고, 나는 모든 질문에 저장하는 데이터베이스가 있습니다. 퀴즈의 다른 유형은 모든 질문은 하나 개의 테이블에 저장되어있는 등 수학, 과학, 역사, 같은있다.
내 질문 테이블은 다음과 같다 :
questions ( qno(int) ,type(int), question, .... ,... )
qno은 기본 키이며, 유형은 퀴즈 형식을 추적하는 데 사용됩니다 :
if type = 1 (math)
type = 2(science)
지금, 나는 시험의 각 유형에 대한 몇 가지 무작위로 질문을 선택합니다. 예를 들어, 난 단지 수학 시험을 위해 어떤 임의의 20 개 질문을 선택 할 수 있습니다.
합니까 MySQL은 임의의 행을 선택 할 수있는 방법이 있나요?
해결법
-
==============================
1.당신은 행을 주문 MySQL의에서 RAND 함수를 사용하여 다음 상단을 취할 수 10 (또는 당신이 원하는 그러나 많은) 한계.
당신은 행을 주문 MySQL의에서 RAND 함수를 사용하여 다음 상단을 취할 수 10 (또는 당신이 원하는 그러나 많은) 한계.
select * from table order by rand() limit 10
그냥 수학 질문을합니다 :
select * from table where type = 1 order by rand() limit 10
-
==============================
2.유닉스 타임 스탬프를 개최한다 테이블에 열을 추가합니다.
유닉스 타임 스탬프를 개최한다 테이블에 열을 추가합니다.
하루 당신을 위해 일하는 어떤 기간 후에는 쿼리가 업데이트 해당 열을 실행합니다.
이 경우 쿼리는 자정에 실행하고 다음과 같이 보일 것이다.
UPDATE table SET rand_id = (UNIX_TIMESTAMP() + (RAND() * 86400));
그런 다음 다음과 유사한 쿼리를 사용하여 행을 검색 할 수 있습니다.
SELECT * FROM table WHERE rand_id > UNIX_TIMESTAMP() ORDER BY rand_id ASC LIMIT 20
미리 정해진 임의의 값을 가진 열을 사용하면 페이지를 열 때마다 하나의 요청에 대한 테이블의 모든 단일 행에 대한 무작위 기능을 실행하는 데 필요한 저장합니다.
-
==============================
3.또 다른 가능성은 (알고리즘 쉽게 적응할 당신이 필요하거나 부분), 임의의 순열을 생성 세션이 저장하는 것입니다, 당신이 그들을 필요로 할 때 질문을 가져옵니다.
또 다른 가능성은 (알고리즘 쉽게 적응할 당신이 필요하거나 부분), 임의의 순열을 생성 세션이 저장하는 것입니다, 당신이 그들을 필요로 할 때 질문을 가져옵니다.
-
==============================
4.가능한 중복이있는 행의 임의의 숫자를 선택하려면
가능한 중복이있는 행의 임의의 숫자를 선택하려면
Select Cus_Id from Customer Where Cus_Id in ( SELECT ABS(CHECKSUM(NewId())) % (select COUNT(*) from Customer) - 0 AS Random FROM Customer)
당신은 좁은 범위의 특정 지점 (ID 1500 및 위의 시작하려면
Select Cus_Id from Customer Where Cus_Id in ( SELECT ABS(CHECKSUM(NewId())) % (select COUNT(*)+1500 from Customer) - 1300 AS Random FROM Customer)
적은 추가 할 수 원하는 경우 SELECT TOP는 X 또는 TOP은 PERCENT를 X
from https://stackoverflow.com/questions/1283640/selecting-random-rows-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 테이블에서 중복 행을 삭제 (0) | 2020.04.12 |
---|---|
[SQL] 어떻게 VARCHAR (날짜)에 16 진수 변환하려면? (0) | 2020.04.12 |
[SQL] 바이너리 문자열로 SQL 서버 변환 정수 (0) | 2020.04.11 |
[SQL] 문 "에서"SQL의 LINQ 버전 (0) | 2020.04.11 |
[SQL] PostgreSQL의 쿼리에서 명명 된 상수를 정의 할 수있는 방법이 있습니까? (0) | 2020.04.11 |