[SQL] 오라클 : '= ANY ()'대 'IN ()'
SQL오라클 : '= ANY ()'대 'IN ()'
난 그냥 궁금합니다 (확실하지가 다른 사람의 경우) 것을 ORACLE SQL에 뭔가를 만났다. 그것은 구글의 심볼을 검색하려고하는 하드이기 때문에 나는, 위키 여기에 요청하고있다 ...
난 그냥 값의 집합에 대해 값을 검사 할 때 당신이 할 수 있다는 것을 발견
WHERE x = ANY (a, b, c)
보통 반대로
WHERE x IN (a, b, c)
궁금 해요 그래서,이 두 구문에 대한 이유는 무엇인가? 표준 하나 하나 약간 괴짜 오라클 구문은? 아니면 둘 다 표준? 그리고 성능상의 이유로 다른 이상 하나, 또는 환경 설정이있다?
그냥 궁금해서 그 '= ANY'구문에 대해 말해 수있는 사람. Cheerz에!
해결법
-
==============================
1.간단한 상관 관계 EXISTS에 대한 (또는 동의어 일부는) 구문 설탕입니다 :
간단한 상관 관계 EXISTS에 대한 (또는 동의어 일부는) 구문 설탕입니다 :
SELECT * FROM mytable WHERE x <= ANY ( SELECT y FROM othertable )
와 같다:
SELECT * FROM mytable m WHERE EXISTS ( SELECT NULL FROM othertable o WHERE m.x <= o.y )
하지 않은 널 (NULL) 필드에 평등 조건으로,이 글은 다음과 유사하게된다.
SQL 서버, MySQL과 PostgreSQL을 포함한 모든 주요 데이터베이스는이 키워드를 지원합니다.
-
==============================
2.
IN- Equal to any member in the list ANY- Compare value to **each** value returned by the subquery ALL- Compare value to **EVERY** value returned by the subquery <ANY() - less than maximum >ANY() - more than minimum =ANY() - equivalent to IN >ALL() - more than the maximum <ALL() - less than the minimum
예를 들면 :
각 부서의 최소 급여와 같은 급여를받을 직원을 (를) 찾기 :
SELECT last_name, salary,department_id FROM employees WHERE salary IN (SELECT MIN(salary) FROM employees GROUP BY department_id);
급여 적은 모든 IT 프로그래머의보다 IT 프로그래머와 없습니다 직원 수 :
SELECT employee_id, last_name, salary, job_id FROM employees WHERE salary <ANY (SELECT salary FROM employees WHERE job_id = 'IT_PROG') AND job_id <> 'IT_PROG';
급여가 IT_PROG의 작업 ID를 가진 직원 ofall 급여보다 적은 누구의 작업 IT_PROG가 아닌 직원 수 :
SELECT employee_id,last_name, salary,job_id FROM employees WHERE salary <ALL (SELECT salary FROM employees WHERE job_id = 'IT_PROG') AND job_id <> 'IT_PROG';
....................
희망이 도움이. -Noorin 파티마
-
==============================
3.간단하고 오라일리의 "마스터 오라클 SQL"에서 인용 넣어하려면 :
간단하고 오라일리의 "마스터 오라클 SQL"에서 인용 넣어하려면 :
희망한다는 점에서 대 ANY에 대한 질문 지 웁니다.
-
==============================
4.나는 당신을 위해 무엇을 찾고있는 것은이이라고 생각 :
나는 당신을 위해 무엇을 찾고있는 것은이이라고 생각 :
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96533/opt_ops.htm#1005298 (링크는 에디 아 와드의 블로그에 있음) 그것을 여기 요약하면 :
동안
-
==============================
5.임의 구문은 같은 쓰기 일에 당신을 수 있습니다
임의 구문은 같은 쓰기 일에 당신을 수 있습니다
WHERE x > ANY(a, b, c)
또는 이벤트
WHERE x > ANY(SELECT ... FROM ...)
확실하지 실제로 어떠한 사용 행성 (및 형제 ALL)에 사람이 있는지.
-
==============================
6.빠른 구글이 발견 http://theopensourcery.com/sqlanysomeall.htm
빠른 구글이 발견 http://theopensourcery.com/sqlanysomeall.htm
모든 당신이이 글은 같은 역할 (널 (null)에 대한 특별한 경우) 다른 대부분의면에서 = 이외의 연산자를 사용할 수 있습니다. 당신은 = 연산자와 어떤로 생각할 수 있습니다.
-
==============================
7.이 표준입니다. 는 SQL 1992 표준 상태
이 표준입니다. 는 SQL 1992 표준 상태
그래서 사실, <의 조건> 행동의 정의는 8.7 <정량 비교 조건>을 기반으로합니다. 즉, 오라클은 제대로 여기에 SQL 표준을 구현
-
==============================
8.아마도 링크 된 기사 중 하나가이 문제를 지적하지만 그것은 사실이 아니다 그 일치 (=) 두 반환 같은 일을 찾을 때. 그러나, 답변의 범위 (>, <, 등)는 "IN"을 사용할 수 없으며, "ANY"를 사용 할 것이다 찾고 ...
아마도 링크 된 기사 중 하나가이 문제를 지적하지만 그것은 사실이 아니다 그 일치 (=) 두 반환 같은 일을 찾을 때. 그러나, 답변의 범위 (>, <, 등)는 "IN"을 사용할 수 없으며, "ANY"를 사용 할 것이다 찾고 ...
나는 분명 뭔가를 놓친 경우 newb, 나를 용서 해요 ...
-
==============================
9.꽤 잘 MySQL의 투명 도료까지 어떤에서 그것의 문서 :
꽤 잘 MySQL의 투명 도료까지 어떤에서 그것의 문서 :
T1 WHERE S1> ANY (T2 FROM SELECT S1) FROM SELECT S1;
https://dev.mysql.com/doc/refman/5.5/en/any-in-some-subqueries.html
또한 앨런 보리에 의한 학습 SQL은 다음 상태 :
from https://stackoverflow.com/questions/2298550/oracle-any-vs-in by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] ERROR 1115 (42000) : 알 수없는 문자 집합 : 'utf8mb4' (0) | 2020.05.20 |
---|---|
[SQL] SQL 쿼리는 열 값을 얻기 위해 다른 컬럼의 MAX 값과 일치? (0) | 2020.05.20 |
[SQL] PostgreSQL의 테이블은 존재하지만 가져올 때 쿼리 "관계가 존재하지 않습니다" (0) | 2020.05.20 |
[SQL] 필터 테이블 왼쪽 가입 적용하기 전에 (0) | 2020.05.20 |
[SQL] 어떻게 바꿔 제약에 (0) | 2020.05.20 |