logo

무작위로 SQL 순서

결과 레코드를 원하는 경우 무작위로 주문 , 여러 데이터베이스에 따라 다음 코드를 사용해야 합니다.

여기에 질문이 있습니다. 데이터베이스에서 임의의 레코드나 행을 가져와야 하는 이유는 무엇입니까?

때로는 다음과 같은 임의의 정보를 표시하고 싶을 수도 있습니다. 기사, 링크, 페이지 등을 사용자에게 전달합니다.

데이터베이스에서 임의의 행을 가져오려면 데이터베이스에 따라 일부 변경된 쿼리를 사용해야 합니다.

    MySQL을 사용하여 임의의 행을 선택합니다.

MY SQL을 사용하여 임의의 행을 반환하려면 다음 구문을 사용하십시오.

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Postgre SQL을 사용하여 임의의 행을 선택합니다.
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    SQL Server에서 임의의 행을 선택합니다.
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    oracle을 사용하여 임의의 행을 선택하십시오.
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    IBM DB2에서 임의의 행을 선택합니다.
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

이 개념을 실제로 이해하기 위해 MySQL 데이터베이스를 사용하는 몇 가지 예를 살펴보겠습니다. 다음 데이터를 사용하여 데이터베이스에 생성된 테이블 항목이 있다고 가정합니다.

표: 항목

ID 상품명 품목_수량 품목_가격 구입 날짜
1 비누 5 200 2021-07-08
2 치약 2 80 2021-07-10
10 오십 2021-07-12
4 1 250 2021-07-13
5 브러시 90 2021-07-15

항목 테이블에서 임의의 레코드를 검색한다고 가정해 보겠습니다.

쿼리를 다음과 같이 작성하겠습니다.

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

우리는 다음과 같은 결과를 얻을 수 있습니다:

ID 상품명 품목_수량 품목_가격 구입 날짜
10 이십 2021-07-12

이제 동일한 쿼리를 한 번 더 실행해 보겠습니다.

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

우리는 다음과 같은 결과를 얻을 수 있습니다:

ID 상품명 품목_수량 품목_가격 구입 날짜
5 브러시 90 2021-07-15

위의 결과를 보면 동일한 쿼리를 두 번 실행하더라도 두 번 모두 서로 다른 레코드가 출력된다는 결론을 내릴 수 있습니다. RAND() 함수는 단일 테이블에서 동일한 쿼리에 대해 두 번 모두 무작위 레코드를 선택했습니다. 따라서 동일한 쿼리를 다시 실행하더라도 매번 다른 결과를 얻게 됩니다. RAND() 함수를 사용하여 동일한 레코드를 연속적으로 가져올 가능성은 거의 없습니다.

이제 테이블의 모든 레코드를 무작위로 가져오려고 한다고 가정해 보겠습니다.

그렇게 하려면 다음 쿼리를 실행해야 합니다.

 mysql> SELECT * FROM items ORDER BY RAND (); 

우리는 다음과 같은 결과를 얻을 수 있습니다:

ID 상품명 품목_수량 품목_가격 구입 날짜
4 1 250 2021-07-13
5 브러시 90 2021-07-15
1 비누 5 200 2021-07-08
2 치약 2 80 2021-07-10
10 오십 2021-07-12

직원 테이블에서 RAND() 함수를 다시 실행하면 다른 레코드 배열을 얻을 수도 있습니다.