具有匿名 table 或硬值列表的 DB2 11 查询
DB2 11 query with anonymous table or hard list of values
我想要一个 DB2 兼容查询,查询我自己的硬编码值列表中不在 table 中的所有值。此查询在 Microsoft SQL Server
中运行良好
SELECT * FROM
(values (1),(2),(3),(4),(7), (7000000)) as T(ID)
EXCEPT
SELECT ID
FROM ACCOUNT;
我知道这个答案 SQL - How can I return the IDs from a where clause list that are not in the table? 他们建议使用 VALUES 子句。也许它适用于其他版本的 DB2,但在我的版本上我收到错误 "Illegal symbol (",所以我不确定它是否喜欢我的 DB2 版本中的 VALUES 函数。
Z/OS 的 Db2 v11 不支持此上下文中的值子句,尽管 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;
我想要一个 DB2 兼容查询,查询我自己的硬编码值列表中不在 table 中的所有值。此查询在 Microsoft SQL Server
中运行良好SELECT * FROM
(values (1),(2),(3),(4),(7), (7000000)) as T(ID)
EXCEPT
SELECT ID
FROM ACCOUNT;
我知道这个答案 SQL - How can I return the IDs from a where clause list that are not in the table? 他们建议使用 VALUES 子句。也许它适用于其他版本的 DB2,但在我的版本上我收到错误 "Illegal symbol (",所以我不确定它是否喜欢我的 DB2 版本中的 VALUES 函数。
Z/OS 的 Db2 v11 不支持此上下文中的值子句,尽管 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;