db2 - DELETE 语句部分删除数据
问题描述
当我在 DB2 中执行以下查询时,它不会立即删除数据。
我有 800 条记录,其中每 2 条记录是重复的,我想删除 2 条记录中的 1 条记录,这样它将在 DB 中留下 400 条记录。
以下是 RESERVATION_NUMBER 的示例。
DELETE
FROM reservation_number
WHERE reservation_id IN (SELECT reservation_id
FROM (SELECT ROW_NUMBER()
OVER() AS RN,
msr1.reservation_number,
msr1.reservation_id,
msr1.used_flag
FROM reservation_number msr1,
reservation_number msr2
WHERE
msr1.reservation_number = msr2.reservation_number
AND msr1.reservation_id <> msr2.reservation_id
ORDER BY msr1.reservation_number)
WHERE Mod (rn, 2) = 0
ORDER BY reservation_number)
如果我多次执行此查询,它将删除完整的数据。正在以下列方式删除数据 -
400、168、076、038、019、003、001
解决方案
我得到了修复。我在 OVER() 中缺少一个参数。
这是正确的查询
DELETE
FROM
RESERVATION_NUMBER
WHERE
RESERVATION_ID IN (
SELECT
RESERVATION_ID
FROM
(
SELECT
ROW_NUMBER() OVER(ORDER BY msr1.RESERVATION_NUMBER) AS RN,
msr1.RESERVATION_NUMBER,
msr1.RESERVATION_ID,
msr1.USED_FLAG
FROM
RESERVATION_NUMBER msr1 ,
RESERVATION_NUMBER msr2
WHERE
msr1.RESERVATION_NUMBER = msr2.RESERVATION_NUMBER
AND msr1.RESERVATION_ID <> msr2.RESERVATION_ID
ORDER BY
msr1.RESERVATION_NUMBER )
WHERE
MOD (RN,2)=1
ORDER BY
RESERVATION_NUMBER )
推荐阅读
- c# - 找不到要运行的项目。确保项目存在于 D:\c# 中,或使用 --project 将路径传递给项目
- outer-join - Splunk:如何在两个源类型中选择不匹配的数据
- apache-spark - 用于存储有关表、它们的源和 DWH 的 ETL 信息的工具
- python - 如何反转onehot-encoding?
- c++ - 如何根据我们输入的尺寸添加条件?
- python-3.x - Pandas set_index() 似乎将某些行的类型更改为
- python - 长短期记忆法。如何预测多元时间序列?
- python - Pandas v1.1.0:Groupby 滚动计数比滚动平均值和总和慢
- java - 使用 PostConstruct 注释观看 mongo 时无法在端口上启动 tomcat
- python - 如何更改表和外键的架构?