DB2 SQL - 可以查询值列表而不对每行值使用"或"?

RDK*_*lls 3 sql db2 db2-400 ibm-midrange

我有一个值列表,我想知道是否可以通过所述列表进行查询,而不是必须为每行值执行"或"或将它们添加到表中并查询表(因为我即将做)

比如说,我的名单是;

010, 46793, '329', '10'
011, 46798, '322', '12'
012, 33333, '111', '14'
Run Code Online (Sandbox Code Playgroud)

我想这样查询;

SELECT VALUE1, VALUE2, VALUE3
  FROM MYTABLE
 WHERE (VALUEW VALUEX, VALUEY, VALUEZ) in(
        (010, 46793, '329', '10'),
        (011, 46798, '322', '12'),
        (012, 33333, '111', '14'))
Run Code Online (Sandbox Code Playgroud)

(这在语法上失败)

而不是必须做;

SELECT VALUE1, VALUE2, VALUE3
  FROM MYTABLE
 WHERE (VALUEW VALUEX, VALUEY, VALUEZ) = (010, 46793, '329', '10')
    OR (VALUEW VALUEX, VALUEY, VALUEZ) = (011, 46798, '322', '12')
    OR (VALUEW VALUEX, VALUEY, VALUEZ) = (012, 33333, '111', '14')
Run Code Online (Sandbox Code Playgroud)

请注意类似的东西;

SELECT VALUE1, VALUE2, VALUE3
  FROM MYTABLE
 WHERE VALUEW IN(010, 011, 012)
   AND VALUEX IN(46793, 46798, 33333) 
   AND VALUEY IN('329', '322', '111')
   AND VALUEZ IN('10', '12', '14')
Run Code Online (Sandbox Code Playgroud)

在这种情况下不起作用.

例如,如果以下值存在于"MYTABLE"中;

011, 33333, '329', '10'
Run Code Online (Sandbox Code Playgroud)

前面提到的SQL会检索它,但它不在我的列表中.

mao*_*mao 6

尝试下面的语法(它在Db2 LUW v11上有效)不确定Db2 for i:

SELECT VALUE1, VALUE2, VALUE3
FROM  MYTABLE
where (VALUEW, VALUEX, VALUEY, VALUEZ) in ( values
        (010, 46793, '329', '10'),
        (011, 46798, '322', '12'),
        (012, 33333, '111', '14')
        );
Run Code Online (Sandbox Code Playgroud)