如果值在语句字符串上市,而不是存储在表中,被用于目前正在由值列表,然后也许是修订的语法[显然,来自IN谓词的其他输入可能会受到影响?以下修改的值列表语法既可以用于原始聚合查询[下面显示的两个查询中的第一个],也可以用于查询如何操作代码的查询[第二个下面两个查询]:
Select count(*)
from TABLE_A
where Col1 in (values('one'),('two'),('three'),('four'))
; -- report from above query follows:
COUNT (*)
2
[BGN-编辑05 - 8 - 2016:将这个文本和例子仅低于]
显然至少一个DB2变体不太愿意在派生表未命名列,所以查询就在列的下方;我选择了COL1,以便与实际TABLE中的名称相匹配,但这不应该是必需的。将(col1)
添加到原始查询中,该查询仍保留在原始的预编辑版本中;该版本仍然是这个编辑\插入后缺少(col1)
这里补充:
select *
from (values('one'),('two'),('three'),('four')) as x (col1)
except (select * from table_a)
; -- report from above query follows:
COL1
three
four
以下是给原来的查询,当一些不成文的DB2运行所注释下方显示一个未命名列发生故障变体;我应该指出,这个SQL查询功能,没有错误,在DB2 for我7.1
[最终编辑05 - 8-2016]
select *
from (values('one'),('two'),('three'),('four')) as x
except (select * from table_a)
; -- report from above query follows:
VALUES
three
four
如果1000个值'IN'条件,那么,你可以添加一个表中并存储所有1000条记录。然后使用'LEFT JOIN'和'NULL'检查你可以很容易找到不匹配的记录 – Arulkumar
@Arulkumar。我已经知道这种方法了。我需要解决任何其他方法。 –
可能是VALUES()的规范的语法替代方法足够作为_any other_方法吗?当这个谓词是[或有效的;我无法测试非选择子查询语法] Col1 in(values('one'),('two'),('three'),('four'))',那么相同的语法可以用在EXCEPT查询[或EXCEPTION JOIN对已经提出的LEFT JOIN的类似影响]。 – CRPence