복붙노트

[SQL] MySQL의에서 임의의 행을 선택

SQL

MySQL의에서 임의의 행을 선택

나는 퀴즈 웹 사이트를 개발하고, 나는 모든 질문에 저장하는 데이터베이스가 있습니다. 퀴즈의 다른 유형은 모든 질문은 하나 개의 테이블에 저장되어있는 등 수학, 과학, 역사, 같은있다.

내 질문 테이블은 다음과 같다 :

questions ( qno(int)  ,type(int), question, .... ,... )

qno은 기본 키이며, 유형은 퀴즈 형식을 추적하는 데 사용됩니다 :

if type = 1 (math)
 type = 2(science)

지금, 나는 시험의 각 유형에 대한 몇 가지 무작위로 질문을 선택합니다. 예를 들어, 난 단지 수학 시험을 위해 어떤 임의의 20 개 질문을 선택 할 수 있습니다.

합니까 MySQL은 임의의 행을 선택 할 수있는 방법이 있나요?

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    3.또 다른 가능성은 (알고리즘 쉽게 적응할 당신이 필요하거나 부분), 임의의 순열을 생성 세션이 저장하는 것입니다, 당신이 그들을 필요로 할 때 질문을 가져옵니다.

    또 다른 가능성은 (알고리즘 쉽게 적응할 당신이 필요하거나 부분), 임의의 순열을 생성 세션이 저장하는 것입니다, 당신이 그들을 필요로 할 때 질문을 가져옵니다.

  4. ==============================

    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

  5. from https://stackoverflow.com/questions/1283640/selecting-random-rows-in-mysql by cc-by-sa and MIT license