DB2 11查询带有匿名表或硬列表的难度列表



我想对我自己的不在表中的值列表中的所有值列表中的所有值兼容查询。此查询在Microsoft SQL Server

中运行良好
SELECT * FROM
  (values (1),(2),(3),(4),(7), (7000000)) as T(ID)
EXCEPT
  SELECT ID
  FROM ACCOUNT;

我知道这个答案SQL-如何从表中不在的子句列表中返回ID?他们建议使用值子句。也许它可以与其他版本的db2一起使用,但是在我的我会得到错误"非法符号("所以我不确定它是否喜欢我版本的db2中的值。

另外您可以尝试使用CTA:

WITH
T(ID) AS (VALUES 1,2,3,4,7,7000000)
SELECT ID FROM T
EXCEPT
SELECT ID FROM ACCOUNT;

db2 v11 for z/os不支持此上下文中的值子句,尽管Linux/unix/windows上的DB2 V11确实支持它。

尽管这很丑陋,并且可能有更好的方法,但您可能会尝试:

SELECT * FROM (select 1 from sysibm.sysdummy1 union select 2 from sysibm.sysdummy1 union select 3 from sysibm.sysdummy1 union select 4 from sysibm.sysdummy1 union select 7 from sysibm.sysdummy1 union select 7000000 from sysibm.sysdummy1 ) EXCEPT SELECT ID FROM ACCOUNT;

使用可以使用 sysibm.sysdummy1

SELECT t.id
FROM (SELECT 1 as ID FROM sysibm.sysdummy1 UNION ALL
      SELECT 2 FROM sysibm.sysdummy1 UNION ALL
      SELECT 3 FROM sysibm.sysdummy1 UNION ALL
      SELECT 4 FROM sysibm.sysdummy1 UNION ALL
      SELECT 7 FROM sysibm.sysdummy1
     ) as t
EXCEPT
  SELECT ID
  FROM ACCOUNT;

相关内容

  • 没有找到相关文章

最新更新