我有一个按名称Customer_SCD
列出的客户表:在SQL中,其中有3列:Customer_Name
,Customer_ID
Customer_TimeStamp
此表中有重复的条目,但 时间戳记 不同。
例如
ABC, 1, 2012-12-05 11:58:20.370
ABC, 1, 2012-12-03 12:11:09.840
我想从数据库中消除此问题,并保持第一时间/日期可用。
谢谢。
这有效,请尝试:
DELETE Customer_SCD
OUTPUT deleted.*
FROM Customer_SCD b
JOIN (
SELECT MIN(a.Customer_TimeStamp) Customer_TimeStamp,
Customer_ID,
Customer_Name
FROM Customer_SCD a
GROUP BY a.Customer_ID, a.Customer_Name
) c ON
c.Customer_ID = b.Customer_ID
AND c.Customer_Name = b.Customer_Name
AND c.Customer_TimeStamp <> b.Customer_TimeStamp
在子查询中,它确定哪个记录是每个的第一个记录Customer_Name
,Customer_ID
然后删除所有其他记录以作重复。我还添加了该OUTPUT
子句,该子句返回受该语句影响的行。
您也可以通过使用排名功能来做到这一点ROW_NUMBER
:
DELETE Customer_SCD
OUTPUT deleted.*
FROM Customer_SCD b
JOIN (
SELECT Customer_ID,
Customer_Name,
Customer_TimeStamp,
ROW_NUMBER() OVER (PARTITION BY Customer_ID, Customer_Name ORDER BY Customer_TimeStamp) num
FROM Customer_SCD
) c ON
c.Customer_ID = b.Customer_ID
AND c.Customer_Name = b.Customer_Name
AND c.Customer_TimeStamp = b.Customer_TimeStamp
AND c.num <> 1
看看哪一个查询开销较小并使用它,当我检查它时,第一种方法效率更高(它具有更好的执行计划)。
这是一个 SQL小提琴
null 还是有其他(更好的)选择? 谢谢
这是我的Flink工作流程: 首先我遇到了 java.lang.Exception: org.apache.flink.streaming.runtime.tasks.ExceptionInChainedOperatorException: Can not forward element to next operator 在< code>flatMap运算符中,任务继续重新启动。我观察到许多重复的
至少一次语义:如果生产者从Kafka代理接收到确认(ack),并且acks=all,则表示消息已准确写入Kafka主题一次。但是,如果生产者确认超时或收到错误,它可能会在假定消息未写入Kafka主题的情况下重试发送消息。如果代理在发送ack之前失败,但在消息成功写入Kafka主题之后失败,则此重试会导致消息被写入两次,并因此多次传递给最终使用者。 我知道时间戳是根据消息从生产者发送的时间设置的。如
问题内容: 我需要确保数据库仅包含两个或两个以上列是唯一的条目。这可以很容易地通过对那些列的约束来实现。 就我而言,我只需要在重叠的时间范围内禁止重复。该表具有和列。在某些情况下,可能首先需要通过设置来使活动条目到期,然后插入调整为和的新条目。 使用似乎可以使先前的条目到期而没有任何问题,但是由于我的基本列当前为,因此插入新条目似乎很麻烦,因此无法再次添加。 我考虑添加和作为约束的一部分,但这只会
我有两个csv文件,我想读入熊猫的数据帧。我想合并它们,但显示时间不能重复。 如果ShowingDateTime是重复的,我想从第一个数据帧而不是第二个数据帧中选择行。我不确定用熊猫做这件事的最好方法。我想排序基于升序ShowingDateTime之后。 CSV1: CSV2: 预期合并结果(在df合并后写入csv):