对MS Access的MySql查询



因此,我正在尝试(实际上在MySql中实现了这一点(从源表中获取3列,仅基于这3列中的2列删除其重复项(这就是为什么我需要分区和row_number(,一旦删除了重复项,如果这2个值还不存在,我将检查

目标表但现在我必须通过MS Access,发现

row_number((不支持分区。

将赞赏任何方法

以下是查询:

INSERT INTO TARGET_TABLE (COL1, CV1, CV2)
SELECT st.DontCareValue, st.CV1, st.CV2
FROM(
select DontCareValue, CV1, CV2,
row_number() over (partition by CV1, CV2 order by DontCareValue) as rn
From sourceTable
where length(CV1) >= 2) st
where st.rn = 1
and not exists(select 1 from TARGET_TABLE tt
where tt.CV1= st.CV1
and tt.CV2 = st.CV2)

这就是Shadow所说的:

请记住,在使用新的有用分析功能之前,过去也存在同样的问题。你只需要从那时起找到合适的设计模式。您得到的RN=1将是每个CV1、CV2组的DontCare的最小值。所以只需在你的su 中使用一分钟

INSERT INTO TARGET_TABLE (COL1, CV1, CV2)
SELECT st.MinDontCareValue, st.CV1, st.CV2
FROM (SELECT Min(DontCareValue) MinDontCareValue, CV1, CV2
FROM sourceTable
WHERE length(CV1) >= 2
GROUP BY CV1, CV2) st
WHERE not exists (SELECT 1 
FROM TARGET_TABLE tt
WHERE tt.CV1= st.CV1
AND tt.CV2 = st.CV2)

最新更新