본문 바로가기
MySql

MySQL 첫 번째 SELECT가 0 행을 반환하는 경우 두 번째 SELECT 쿼리

by 베이스 공부 2020. 11. 27.
반응형

나는 PHP 스크립트의 속도를 높이려고 노력하고 있으며 현재 Mysql 도메인에서 PHP 로직을 추진하고 있습니다. 첫 번째 Select가 행을 반환하지 않거나 0의 개수를 반환하는 경우 다른 선택 쿼리를 만드는 방법이 있습니까?

첫 번째 쿼리가 먼저 실행되어야하고 두 번째 쿼리는 첫 번째 쿼리가 빈 집합을 반환하는 경우 활성화해야합니다.

SELECT * FROM proxies WHERE (A='B') || SELECT * FROM proxies WHERE (A='C')

위의 2 개의 쿼리에 대해이 코드가 있지만 각 쿼리를 두 번 실행하는 것 같습니다 (한 번 계산하고 한 번 반환). 이 작업을 수행하는 더 좋은 방법이 있습니까?

IF (SELECT count(*) FROM proxies WHERE A='B')>0
    THEN SELECT * FROM proxies WHERE A='B'
ELSEIF (SELECT count(*) FROM proxies WHERE A='C')>0
    THEN SELECT * FROM proxies WHERE A='C'
END IF

 

해결 방법

 

한 가지 옵션은 EXISTS 와 함께 UNION ALL 을 사용하는 것입니다.

SELECT * 
FROM proxies 
WHERE A='B'
UNION ALL
SELECT * 
FROM proxies 
WHERE A='C' AND NOT EXISTS (
    SELECT 1
    FROM proxies 
    WHERE A='B'
)


그러면 A = 'B'가있는 경우 proxies 테이블에서 행이 반환됩니다. 그러나 존재하지 않는 경우 A = 'C'가있는 행을 찾습니다.

 

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

 

 

반응형

댓글