sql - DB2 SQL - 可以在不对每行值使用 "or"的情况下查询值列表吗?

标签 sql db2 ibm-midrange db2-400

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

比如说,我的 list 是;

010, 46793, '329', '10'
011, 46798, '322', '12'
012, 33333, '111', '14'

我想这样查询;

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

(语法失败)

而不是必须做;

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')

请注意类似;

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')

在这种情况下将不起作用。

例如,如果“MYTABLE”中存在以下值;

011, 33333, '329', '10'

上述 SQL 会检索它,但它不在我的列表中。

最佳答案

尝试下面的语法(它在 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')
        );

关于sql - DB2 SQL - 可以在不对每行值使用 "or"的情况下查询值列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47817504/

相关文章:

sql server 将字符串转换为日期时间

Java select 查询在 DB2 数据库上抛出错误?

db2 - SAS通过ODBC错误连接到DB2

sql - SQL中是否可以选择多个表作为一张大表查看?

sql - 在 sql server 中启用用户

mysql - 如何使用Max聚合函数获取行的值?

db2 - DB2 如何获取一个月的字符串值

sql-server-2005 - 从 SQL 2005 链接服务器执行 DB2 iSeries 存储过程

c# - SQL 插入 : Duplicate Key Value Specified?

mysql - 从内连接的第一条记录中获取列表