본문 바로가기
MySql

MySQL MySql If Exists Set Value?

by 베이스 공부 2021. 2. 14.
반응형

많은 정보를 반환하고 조인을 사용하여 두 테이블을 조인하는 쿼리가 있으며 완벽하게 작동합니다.

하지만 티켓이라는 필드가 있는데, 사용 가능한 시간이 있는지 확인하고 하나라도 있으면 1로 설정하고 그렇지 않으면 0으로 설정합니다.

SELECT 
name,poster,sid,tickets = (IF SELECT id FROM times WHERE shows.tid=times.tid LIMIT 1, 
if value returned set to 1, otherwise set to 0) 
FROM shows JOIN show_info ON (id) WHERE sid=54 order by name ASC

분명히 그것은 올바른 MySQL 진술은 아니지만 내가 찾고있는 것에 대한 예를 제공 할 것입니다.

이것이 가능한가? 아니면 결과를 통해 루프를 수행하기 위해 첫 번째 선택을 수행하고 두 번째 선택을 수행하고 그런 방식으로 값을 설정해야합니까? 아니면 더 나은 성능이 현명합니까?

 

해결 방법

 

EXISTS 를 살펴 보겠습니다. 대부분의 경우 where 문과 일치하는 모든 항목을 COUNT 하는 것보다 훨씬 빠릅니다. 그 말로. 쿼리는 다음과 같아야합니다.

SELECT 
  name,
  poster,
  sid,
  (
   CASE WHEN EXISTS(SELECT NULL FROM times WHERE shows.tid=times.tid)
      THEN 1 
      ELSE 0
   END 
  )AS tickets 
FROM 
  shows 
  JOIN show_info ON (id) WHERE sid=54 order by name ASC

 

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

 

 

반응형

댓글