【问题标题】:DB2 Delete With Inner JoinDB2 使用内部联接删除
【发布时间】:2014-05-28 08:09:29
【问题描述】:

我有一个这样的查询:

DELETE FROM db2inst1.REPORTER_STATUS INNER JOIN REPORTER_DETAILS 
ON REPORTER_STATUS.SERVERSERIAL = REPORTER_DETAILS.SERVERSERIAL 
AND year(REPORTER_STATUS.FIRSTOCCURRENCE)=2011 AND 
month(REPORTER_STATUS.FIRSTOCCURRENCE)=12 AND 
day(REPORTER_STATUS.FIRSTOCCURRENCE)=12

我想运行类似 tihs 的查询,但它给了我错误。我怎样才能运行这样的查询?

【问题讨论】:

  • 你得到什么错误?
  • 除此之外,你为什么要分离日期/时间信息?这将导致您的查询忽略索引(很慢)。使用像AND Reporter_Status.firstOccurrence >= DATE('2011-12-12') AND Reporter_Status.firstOccurrence < DATE('2011-12-12') + 1 DAY 这样的范围查询,它将能够使用索引(并且与该列的确切类型无关)。
  • 我正在解析其中的时间,并且在此查询之前我有很多日期,所以我必须做类似的事情。
  • @Rahul 它没有运行

标签: sql db2 inner-join sql-delete


【解决方案1】:

不确定 DB2 中是否允许发布的删除形式(DELETE 和 JOINS),但您可以尝试如下操作

DELETE FROM REPORTER_STATUS 
WHERE year(REPORTER_STATUS.FIRSTOCCURRENCE)=2011 
AND month(REPORTER_STATUS.FIRSTOCCURRENCE)=12 
AND day(REPORTER_STATUS.FIRSTOCCURRENCE)=12
AND SERVERSERIAL in 
(
SELECT distinct SERVERSERIAL from REPORTER_DETAILS
)

【讨论】:

  • 我想从 REPORTER_DETAILS 表中删除
  • @developerCoder,您的帖子说您想从REPORTER_STATUS 表中删除。无论如何,您只需要相应地更改表引用即可。
猜你喜欢
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 2014-06-10
  • 2014-04-19
相关资源
最近更新 更多