SQL ANY & ALL 연산자
저는 sql을 사용하기 시작했고 많은 이야기를 들었습니다.ANY
그리고.ALL
오퍼레이터들.누가 어떤 종류의 쿼리에 사용되는지 그리고 어떻게 작동하는지 설명해 주실 수 있나요?
그ANY
그리고.ALL
연산자를 사용하면 단일 열 값과 다른 값의 범위를 비교할 수 있습니다.예를 들어 다음과 같습니다.
select * from Table1 t1 where t1.Col1 < ANY(select value from Table2)
ANY
범위의 값 중 하나에 대해 작업이 참일 경우 조건이 충족됨을 의미합니다.ALL
범위의 모든 값에 대해 작업이 참일 경우에만 조건이 충족됨을 의미합니다.
가정에 더 가까이 다가갈 수 있는 예제를 사용하려면 다음을 수행합니다.
select * from Table1 t1 where t1.Col1 = ANY(select value from Table2)
이 작업을 수행하는 것과 동일합니다.
select * from Table1 t1 where t1.Col1 in (select value from Table2)
나는 많은 것을 들었습니다.
ANY
그리고.ALL
오퍼레이터들
약간 놀랬네요.제가 직접 사용하는 경우는 거의 없습니다.더 흔히 볼 수 있는 것은WHERE val IN (subquery)
그리고.WHERE EXISTS (subquery)
.
@Adam Robinson의 예를 빌리려면:
SELECT *
FROM Table1 AS t1
WHERE t1.Col1 < ANY (
SELECT value
FROM Table2
);
저는 보통 이렇게 쓰는 것을 더 많이 봅니다.
SELECT *
FROM Table1 AS t1
WHERE EXISTS (
SELECT *
FROM Table2 AS t2
WHERE t1.Col1 < t2.value
);
술어의 매개변수() 때문에 이 구문을 읽기가 더 쉽다고 생각합니다.t1.Col1
그리고.t2.value
(각각) 더 가까이에 있습니다.
위의 답변은 "ANY"의 일부 측면을 다루었으며 "ALL"은 다루지 않았습니다.
이 두 가지 모두 다른 테이블과 비교할 때 유용하며 해당 테이블의 항목이 동적으로 변경됩니다.
특히 < ANY 및 > ANY의 경우에 해당되며, 정적 인수의 경우 MAX/MIN을 각각 취하고 "ANY"를 삭제할 수 있습니다.
예를 들어, 이 쿼리는 -
SELECT 상품명, 상품제품의 ID WHERE 제품ID > ANY (100, 200, 300);
다음으로 단순화할 수 있습니다.
SELECT 상품명, 상품제품의 ID WHERE 제품ID > 100;
"ALL" 쿼리는 하나의 열 값을 ALL(...)과 비교하게 되며, "ALL" 인수가 동일하지 않은 한 항상 거짓이 됩니다.
전 - 의 경우
SELECT 상품명, 상품제품의 ID WHERE 제품ID = ALL (SELECT 상품)ID FROM 주문 세부 정보);
하위 쿼리가 -와 같이 다중 값일 때 항상 비어 있거나 거짓입니다.
SELECT 상품명, 상품제품의 ID WHERE 제품ID = ALL (10, 20, 30);
Adam의 답변에 덧붙여 구문이 모호할 수 있음을 주의하십시오.
SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;
여기서 ANY는 하위 쿼리가 부울 값을 가진 하나의 행을 반환하는 경우 하위 쿼리를 도입하거나 집합 함수로 간주할 수 있습니다.(postgresql.org 경유)
여기에 일부 컨텍스트를 넣을 수 있는 샘플 쿼리입니다.우리가 메이저리그 선수들에 대한 데이터베이스를 가지고 있고 푸에르토리코의 일반적인 성씨에 대한 데이터베이스를 가지고 있다고 가정해 보겠습니다.누군가가 푸에르토리코 선수들이 MLB에서 얼마나 흔한지 보고 싶어했다고 가정해 보겠습니다.다음 쿼리를 실행할 수 있습니다.
SELECT mlb_roster.last_name FROM mlb_roster WHERE mlb_roster.last_name = ANY (SELECT common_pr_names.last_name FROM common_pr_names)
여기서 쿼리는 MLB 로스터의 성을 비교하고 일반적인 푸에르토리코 이름 목록에도 있는 성만 표시하는 것입니다.
언급URL : https://stackoverflow.com/questions/5980474/sql-any-all-operators
'programing' 카테고리의 다른 글
디브를 나란히 두는 방법 (0) | 2023.09.19 |
---|---|
페이지 로드 시 iPad Safari Web Inspector 충돌 (0) | 2023.09.19 |
node http-server가 업데이트된 html 파일을 제공하지 않음 (0) | 2023.09.19 |
Android 4.0 에뮬레이터에서 Google Play 에뮬레이터 (0) | 2023.09.19 |
기능적인 반복 방법(ES6/7) (0) | 2023.09.19 |