【问题标题】:Issue with DB2 DELETE COMMANDDB2 DELETE 命令的问题
【发布时间】:2015-07-24 18:53:49
【问题描述】:

我有一个SQL tablecolumn A & B 我需要从相应的 DB2 表中删除数据,其列值与上述 sql 表不同。我已经实现了类似下面的东西来实现这个功能。

RSSQL.打开"select * from sql_table"

ConnDB2 "DELETE from db2_table where not exists(select 1 from db2_table d where d.A='" & rssql.fields(0) & "' and d.B = '"& rssql.fields(1) &"')

但是这个删除命令不能删除 db2 表中的任何值。请帮忙。

SQL 表:

COLUMN A   COLUMN B
12          23
34          56

DB2 表:

COLUMN A  COLUMN B
1             2
12           23
3             4
34           56

所以,我的删除命令应该删除第一行和第三行。删除后,db2 表应如下所示:

DB2 表:

COLUMN A    COLUMN B
12            23
34            56

【问题讨论】:

  • 不清楚您要做什么,您能否提供一个示例表,其中包含一些说明问题的数据。您的问题似乎很笼统,因此您应该能够将 sqlfiddle 与 DB2 以外的一些 DBMS 一起使用
  • @lennart:我已经添加了示例表并输出了。你现在能帮忙吗
  • 这些表是否存在于两个不同的数据库服务器中?
  • @Utkarsh:是的。第一个表是sql表。第二个是 db2 表。我必须根据不应该与 sql 表的列值匹配的列值从 db2 表中删除数据
  • SQL 是一种语言,具有来自不同公司的不同实现——DB2(来自 IBM)就是其中之一。 SQL Table(其他公司)到底是什么意思?请注意,您可能最容易将另一个表批量加载到 DB2 中,然后在那里运行 Gordon 的回答中的语句。此外,您应该使用某种形式的参数化查询,因为您可能对 SQL 注入持开放态度。

标签: sql db2 sql-delete


【解决方案1】:

我想这就是你想要的delete

delete from db2_table dt
    where not exists (select 1
                      from sql_table st
                      where st.columna = dt.columna and st.columnb = dt.columnb
                     );

我不确定你为什么要执行两个查询。

【讨论】:

  • 她说表在两个不同的服务器中。这可以使用单个数据库连接吗?
  • 感谢 Gordon Linoff,我没有尝试过这个,虽然我有这个想法。一个问题:我们可以将 sql 和 db2 查询组合在一起(就像您在您的回答中所做的那样),因为连接对象是 DB2。我的子查询将如何执行,因为它连接到 sql 而不是 db2。
  • @ArpitaDutta - 据我所知,你做不到。
  • @Utkarsh :那么你能建议一个替代选项吗?我在查询中粘贴的示例代码 sn-p 不起作用。我的方法正确吗?如果是这样,那么我在这里缺少什么?
  • @ArpitaDutta - 可以使用编程语言(如 java 等)来完成。您可以使用一个连接从 sqltable 获取结果,然后您可以使用先前收到的结果并使用另一个连接在下一个查询中使用它。我不知道您是如何尝试在数据库控制台上使用 SQL 命令来实现这一点的。你在使用任何编程语言吗?
猜你喜欢
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 2017-03-17
  • 2020-07-23
  • 2013-12-17
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多