반응형
나는 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
반응형
'MySql' 카테고리의 다른 글
MySQL 여러 항목에 대한 항목 값 가격 인상을위한 SQL 쿼리 (0) | 2020.11.27 |
---|---|
MySQL PHP 매직 따옴표에도 불구하고 성공적인 SQL 주입 (0) | 2020.11.27 |
MySQL Mysql의 다른 테이블에서 테이블에 열을 추가하는 방법은 무엇입니까? (0) | 2020.11.27 |
MySQL : 프로그래밍 방식으로 외래 키 관계를 결정하는 방법은 무엇입니까? (0) | 2020.11.27 |
MySQL CodeIgniter "객체 컨텍스트에 없을 때 $ this 사용"함수에서 (0) | 2020.11.27 |
댓글