• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

SQL문 질문

22.06.23 22:50 작성 조회수 139

0

선생님 채팅방 강퇴를 구현중인데, 강퇴한사람이 해당 방 맴버가 맞는지 그리고 강퇴권한(isOwner OR isManager)이 있는지 체크하려는 sql문을 작성중입니다.

 SELECT `rm`.`UserId` AS `rm_UserId`, `rm`.`RoomId` AS `rm_RoomId` FROM `room_members` `rm` WHERE `rm`.`RoomId` = ? AND `rm`.`UserId` = ? AND `rm`.`isOwner` = ? OR `rm`.`isManager` = ?

이렇게 sql을 짜도 될지 모르겠습니다.
roomId와 userId에 인덱싱이 걸려서 먼저 처리되고 isOwner OR isManager 둘중 하나인지 확인하려고하는데,

마지막에 or 때문에 풀쿼리들어갈까봐 걱정됩니다. 저렇게 짜도 괜찮을까요??

 

typeorm으론 이렇습니다.

const isManager = await this.roomMembersRepository
.createQueryBuilder('rm')
.select('rm.UserId')
.where('rm.RoomId = :RoomId AND rm.UserId = :UserId', { RoomId, UserId })
.andWhere('rm.isOwner = :isOwner OR rm.isManager = :isManager', {
isOwner: true,
isManager: true,
})
.getOne();

 

답변 1

답변을 작성해보세요.

0

걱정되시면 괄호로 or 두 개를 묶으시면 됩니다.