programing

MySQL에서 고정 목록으로 항목을 주문하시겠습니까?

projobs 2022. 9. 29. 22:15
반응형

MySQL에서 고정 목록으로 항목을 주문하시겠습니까?

랜덤화 스텝이 있기 때문에 쿼리를 실행할 때까지 알 수 없는 주문품목 목록을 확정합니다.

다음과 같은 것을 원합니다.

라고 가정합니다.is_launch_set1, 3, 7, 11이 반환되지만 다음과 같이 랜덤화되었습니다.

SELECT * FROM items WHERE is_launch_set=1 ORDER BY id values (3,11,7,1);

어떻게 해야 할지 생각나는 거 없어요?내 생각엔...find_in_set잘 모르겠어요.

다음 중 하나를 사용하여 이 작업을 수행할 수 있습니다.

ORDER BY FIND_IN_SET(id, '3,11,7,1')

또는

ORDER BY FIELD(id, 3, 11, 7, 1)

또는

ORDER BY CASE id WHEN 3 THEN 0
                WHEN 11 THEN 1
                 WHEN 7 THEN 2
                 WHEN 1 THEN 3
                        ELSE 4
         END

mys sql 8.0에서는 첫 번째 열(이 경우 3)로만 순서가 매겨집니다.

ORDER BY FIND_IN_SET(id, '3,11,7,1')

이 예에서는 효과가 있었지만, 위로는 효과가 있었습니다.마지막 3개, 마지막 11개, 7개 등입니다.

ORDER BY FIELD(id, 3, 11, 7, 1)

이 예를 선택한 경우 1이 먼저 표시되고 7, 11 등이 표시됩니다.

ORDER BY FIELD(id, 3, 11, 7, 1) DESC

언급URL : https://stackoverflow.com/questions/10940402/order-items-in-mysql-by-a-fixed-list

반응형