programing

오라클 호환 sql에서 튜플 비교가 가능합니까?

telebox 2023. 10. 19. 22:16
반응형

오라클 호환 sql에서 튜플 비교가 가능합니까?

튜플이 내가 말하는 것의 용어라면 100%는 아니지만 나는 다음과 같은 것을 보고 있습니다.

Table grades
user    grade
------------
Jim     B
Bill    C
Tim     A
Jim     B+

제가 할 수 있는 일은:

SELECT COUNT(*)
FROM grades
WHERE (
   (user = 'Jim' AND grade = 'B')
   OR (user = 'Tim' AND grade = 'C')
);

하지만 이런 것을 더 할 수 있는 방법이 있을까요?

SELECT COUNT(*)
    FROM grades
    WHERE (user, grade) IN (('Jim','B'), ('Tim','C'));

편집: 참고 사항으로, 저는 단지 다음과 같이 테스트했습니다.

(user, grade) = ('Tim','C')

그리고 그것도 실패하고 그래서 IN도 실패할 것이라고 생각했지만, 제가 틀렸습니다(감사하게도!).

게시한 쿼리는 유효한 구문이어야 합니다.

SQL> ed
Wrote file afiedt.buf

  1  with grades as (
  2    select 'Jim' usr, 'B' grade from dual
  3    union all
  4    select 'Bill', 'C' from dual
  5    union all
  6    select 'Tim', 'A' from dual
  7    union all
  8    select 'Jim', 'B+' from dual
  9  )
 10  select *
 11    from grades
 12   where (usr,grade) in (('Jim','B'),
 13                         ('Tim','C'),
 14*                        ('Tim','A'))
SQL> /

USR  GR
---- --
Jim  B
Tim  A

하위 쿼리를 사용하여 튜플 목록을 테이블처럼 처리할 수 있습니다.

SELECT  COUNT(*)
FROM    grades
JOIN    (
        SELECT  'Jim' as user, 'B' as grade from dual
        UNION ALL
        SELECT  'Tim', 'C' from dual
        UNION ALL
        SELECT  'Pim', 'D' from dual
        ) as SearchTarget
ON      SearchTarget.user = grades.user
        and SearchTarget.grade = grades.grade

언급URL : https://stackoverflow.com/questions/5425041/is-it-possible-to-compare-tuples-in-oracle-compatible-sql

반응형