Db2 SQL 根据大量数据选择排除行的行

Posted

技术标签:

【中文标题】Db2 SQL 根据大量数据选择排除行的行【英文标题】:Db2 SQL Select rows with excluding rows based on large number of data 【发布时间】:2021-03-13 10:54:45 【问题描述】:

我有以下查询从表中获取数据以根据条件排除报告

Select  ACCOUNTNO, EFFECTIVE_DATE, RATEPERCENTAGE
  FROM  TESTXY.ACCINFODET
WHERE
  EFFECTIVE_DATE > '2021-01-01'
AND ACCOUNTNO NOT IN 
(
00000005367890,
00000005378912,
00000007326741,
.
.
.
.
00000089237410,
)

ORDER BY ACCOUNTNO;

排除条件数据范围从 600 到 2K 帐号 你能建议最好的尝试方法吗

非常感谢!

【问题讨论】:

ACCOUNTNO 列的数据类型是什么?如果它是 CHAR 或 VARCHAR(所以是字符串),那么您需要将 ACCOUNTNO 值放在引号中...所以 ACCOUNTNO NOT IN ('00000005367890','00000005378912'...) 您的查询有什么问题?您的问题似乎缺乏问题。 这个查询工作正常。我正在寻找更好的方法来运行它,就 db2 性能而言,排除条件是每个报告的必然变化。谢谢 【参考方案1】:

将要排除的帐号加载到单独的单列表中,然后在您的 not in 子句中使用子选择:

...
AND ACCOUNTNO NOT IN 
( SELECT * FROM TESTXY.EXCLACCTNOS )

警告:未经测试。

【讨论】:

以上是关于Db2 SQL 根据大量数据选择排除行的行的主要内容,如果未能解决你的问题,请参考以下文章

动态SQL从表中执行大量行

Db2 数据库 SQL 语句性能调优 8 个技巧

存在匹配时排除不匹配行的 SQL 多对多连接

T-SQL:删除所有重复的行但保留一个[重复]

SQL 根据另一行中的值排除行

如何根据多个条件从 SQL Server 中删除大量数据