본문 바로가기
MySql

MySQL에서 임의의 행을 어떻게 선택합니까?

by 베이스 공부 2020. 10. 18.
반응형
mytable

pid name field
=== ==== =====
1    A1   0
2    A2   1
3    A3   1
4    A4   0   
5    A5   0

이것은 내 테이블 구조입니다. 여기에서 무작위로 4 행을 선택하고 싶으므로 쿼리에서 RAND () mysql 함수를 사용합니다. 내 질문은

행에 어떻게 페어링합니까? 내 말은, pid 2와 3을 항상 하나씩 선택하고 싶습니다. 나는 다음 순서로 필요합니다. A2 A3 쌍을 깨고 싶지 않습니다.

A1 A2 A3 A4 또는 A2 A3 A4 A1 또는 A2 A3 A4 A5 또는 A4 A5 A2 A3

아래 쿼리를 사용했지만 작동하지 않습니다.

SELECT * FROM mytable ORDER BY RAND() ASC limit 0,4

 

해결 방법

 

turbod는 그의 대답에 가깝습니다. 그는 A2 및 A3에 관한 행과 함께 원하는 임의의 행을 얻은 후 pid로 주문하고 싶을 때 무작위로 주문했습니다.

(
    SELECT *
    FROM `mytable`
    WHERE 
        name ='A2' OR 
        name ='A3'
    LIMIT 2
)
UNION
(
    SELECT DISTINCT *
    FROM `mytable`
    WHERE 
        name !='A2' OR 
        name !='A3'
    ORDER BY RAND( ) LIMIT 2
) 
ORDER BY `pid`

 

참조 페이지 https://stackoverflow.com/questions/5104141

 

 

반응형

댓글