我不是百分之百,如果元组是我正在谈论的术语,但我正在看这样的事情:
Table grades
user grade
------------
Jim B
Bill C
Tim A
Jim B+
Run Code Online (Sandbox Code Playgroud)
我知道我能做到:
SELECT COUNT(*)
FROM grades
WHERE (
(user = 'Jim' AND grade = 'B')
OR (user = 'Tim' AND grade = 'C')
);
Run Code Online (Sandbox Code Playgroud)
但有没有办法做更像这样的事情?
SELECT COUNT(*)
FROM grades
WHERE (user, grade) IN (('Jim','B'), ('Tim','C'));
Run Code Online (Sandbox Code Playgroud)
编辑:作为旁注,我只测试:
(user, grade) = ('Tim','C')
Run Code Online (Sandbox Code Playgroud)
那失败了,所以我认为IN也会失败,但我错了(谢天谢地!).
Jus*_*ave 17
您发布的查询应该是有效的语法
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
Run Code Online (Sandbox Code Playgroud)