본문 바로가기
카테고리 없음

[MYSQL] 채팅 목록 쿼리 추천!!

by 우딬 2021. 8. 8.

바람처럼 채팅 DB

send_deliver_num , check_deliver_num 은 보내는 사람 받는사람이고

message_thread는 확인했는지 안했는지,

send_deliver_flag, check_deliver_flag는

0이면 리스트나 목록에서 보이며, 1이면 리스트나 목록에서 보이지 않음(삭제된 상태)

 

바람처럼 채팅 목록 쿼리

SELECT t1.*
FROM tblRider_Notice t1
JOIN ( SELECT LEAST(send_deliver_num, check_deliver_num) user1,
              GREATEST(send_deliver_num, check_deliver_num) user2,
              MAX(t2.message_day) message_day
       FROM tblRider_Notice t2 WHERE '$riderNum' IN (send_deliver_num, check_deliver_num) AND '0' IN (if(send_deliver_num='$riderNum',send_deliver_flag,check_deliver_flag))
       GROUP BY user1, user2 ) t3  ON t1.send_deliver_num IN (t3.user1, t3.user2)
                                  AND t1.check_deliver_num IN (t3.user1, t3.user2)
                                  AND t1.message_day = t3.message_day ORDER BY t1.message_day DESC;

 

기존에 쓰던 쿼리가 너무 느려서 새로 변경하는데 너무 잘 되어서 공유합니다.

댓글