복붙노트

[SQL] 오라클 : '= ANY ()'대 'IN ()'

SQL

오라클 : '= ANY ()'대 'IN ()'

난 그냥 궁금합니다 (확실하지가 다른 사람의 경우) 것을 ORACLE SQL에 뭔가를 만났다. 그것은 구글의 심볼을 검색하려고하는 하드이기 때문에 나는, 위키 여기에 요청하고있다 ...

난 그냥 값의 집합에 대해 값을 검사 할 때 당신이 할 수 있다는 것을 발견

WHERE x = ANY (a, b, c)

보통 반대로

WHERE x IN (a, b, c)

궁금 해요 그래서,이 두 구문에 대한 이유는 무엇인가? 표준 하나 하나 약간 괴짜 오라클 구문은? 아니면 둘 다 표준? 그리고 성능상의 이유로 다른 이상 하나, 또는 환경 설정이있다?

그냥 궁금해서 그 '= ANY'구문에 대해 말해 수있는 사람. Cheerz에!

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    3.간단하고 오라일리의 "마스터 오라클 SQL"에서 인용 넣어하려면 :

    간단하고 오라일리의 "마스터 오라클 SQL"에서 인용 넣어하려면 :

    희망한다는 점에서 대 ANY에 대한 질문 지 웁니다.

  4. ==============================

    4.나는 당신을 위해 무엇을 찾고있는 것은이이라고 생각 :

    나는 당신을 위해 무엇을 찾고있는 것은이이라고 생각 :

    http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96533/opt_ops.htm#1005298 (링크는 에디 아 와드의 블로그에 있음) 그것을 여기 요약하면 :

    동안

  5. ==============================

    5.임의 구문은 같은 쓰기 일에 당신을 수 있습니다

    임의 구문은 같은 쓰기 일에 당신을 수 있습니다

    WHERE x > ANY(a, b, c)
    

    또는 이벤트

    WHERE x > ANY(SELECT ... FROM ...)
    

    확실하지 실제로 어떠한 사용 행성 (및 형제 ALL)에 사람이 있는지.

  6. ==============================

    6.빠른 구글이 발견 http://theopensourcery.com/sqlanysomeall.htm

    빠른 구글이 발견 http://theopensourcery.com/sqlanysomeall.htm

    모든 당신이이 글은 같은 역할 (널 (null)에 대한 특별한 경우) 다른 대부분의면에서 = 이외의 연산자를 사용할 수 있습니다. 당신은 = 연산자와 어떤로 생각할 수 있습니다.

  7. ==============================

    7.이 표준입니다. 는 SQL 1992 표준 상태

    이 표준입니다. 는 SQL 1992 표준 상태

    그래서 사실, <의 조건> 행동의 정의는 8.7 <정량 비교 조건>을 기반으로합니다. 즉, 오라클은 제대로 여기에 SQL 표준을 구현

  8. ==============================

    8.아마도 링크 된 기사 중 하나가이 문제를 지적하지만 그것은 사실이 아니다 그 일치 (=) 두 반환 같은 일을 찾을 때. 그러나, 답변의 범위 (>, <, 등)는 "IN"을 사용할 수 없으며, "ANY"를 사용 할 것이다 찾고 ...

    아마도 링크 된 기사 중 하나가이 문제를 지적하지만 그것은 사실이 아니다 그 일치 (=) 두 반환 같은 일을 찾을 때. 그러나, 답변의 범위 (>, <, 등)는 "IN"을 사용할 수 없으며, "ANY"를 사용 할 것이다 찾고 ...

    나는 분명 뭔가를 놓친 경우 newb, 나를 용서 해요 ...

  9. ==============================

    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은 다음 상태 :

  10. from https://stackoverflow.com/questions/2298550/oracle-any-vs-in by cc-by-sa and MIT license