ORDER BY CASE 또는 IF BY (ORDER BY IF)로 작업 한 적이 없으며 인터넷에서 찾은 몇 가지 예가 다음 작업을 수행하는 데 도움이되는 것보다 더 혼란 스럽습니다.MySQL ORDER BY CASE/IF 관련 문제
회원 목록이 있으며이 회원 목록의 상단 (상단)으로 사용자를 주문하여 사용자의 활동에 약간의 보상을 원합니다. - 필드 각각에 의해 프로파일에 채워진 모든
user_percentage | user_photo | user_lastlogin
----------------------------------------------------------
12 1 1356389646
42 1 1456549641
37 0 1776389443
84 1 1356535535
56 0 1868689646
66 0 1811189622
71 1 1656779645
- 는 "USER_PERCENTAGE는"값 (100 공)을 원하는 분야 내 예에서
, 내가 3 열이 "사용자"라는 MySQL의 테이블이 사용자.
- 사용자가 프로필 사진을 업로드 한 경우 'user_photo'는 값 (0 = 거짓, 1 = 참)을 보유합니다.
- 는 "user_lastlogin는 마지막 방문의 값 (타임 스탬프)를 보유하고
그것은 조금 설명하는 것이 아니라 내가 원하는 간단 무슨 말을하기는 어렵습니다 :.
사용자를 로모그래퍼 높은 user_percentage 값은 멤버 목록 위에 있어야하지만 user_photo가 없으면 이전 user_lastlogin 타임 스탬프가있는 경우와 마찬가지로 멤버 목록에서 "아래로 이동"한 다음 멤버에서 더 아래쪽에 나열해야합니다 주문하십시오.
또한 내가 막으려 고하는 것은 사용자가 가입하고 모든 프로필 필드를 채운 다음 user_percentage 값을 100으로 설정하고 사진을 업로드 한 다음 user_photo를 1로 설정하지만 로그인하지 않은 것입니다. 더 이상 오랫동안 (그래서 그는 매우 오래된 user_lastlogin = timestamp를 가짐),이 사용자를 멤버 목록 순서대로 아래쪽으로 이동 시키길 원합니다.
내 질문은 : 어떻게 든 1 개의 MySQL ORDER BY 문으로 할 수 있습니까?
user_lastlogin이 중요도가 높고 user_percentage가 조금 더 높은 반면 user_photo의 중요도는 30 %라고 가정 해 보겠습니다.
아이디어가 있으십니까?
감사합니다.
물론 '아래로 움직이기'는 사용자가 100 user_percentage + user_photo = 1이지만 매우 오래된 user_lastlogin 날짜 인 경우를위한 것이 었습니다. 그런 다음이 오래된 _lastlogin 날짜로 인해 사용자 아래에 표시되어야합니다 최신 _lastlogin 날짜가 있습니다. –
하지만 얼마나 새로운가요? 1 년이면 충분합니까? 1 개월? 1 일? 1 초? –
예, 로그인하지 않은 상태에서 1 년 (user_lastlogin) 후에 간단한 것으로합시다. 또한 user_photo가 없으면 목록의 끝에 나열되어야합니다. –