如果不分段对比,SQL server无法运行,但拆开分段,这个脚码又出现结果缺失,不完整,比对相同的数据不完整.请问: 问题出在哪里,如何修改脚本,学习中.请 指点迷津
双循环的话可以这样写,效率应该不好,没验证过
DECLARE @SNO INT = 1;
WHILE @SNO < 11
BEGIN
DECLARE @GroupID INT = 1;
WHILE @GroupID < 11
BEGIN
INSERT INTO Result007
SELECT NoText
FROM AAA a
WHERE EXISTS ( SELECT 1
FROM BBB b
WHERE a.NoText = b.NoText
AND b.KID BETWEEN (1 + 40642560 * (@SNO - 1)) AND 40642560 * @SNO)
AND a.ID BETWEEN (1 + 54396352 * (@GroupID - 1)) AND 54396352 * @GroupID;
SET @GroupID = @GroupID + 1;
END;
SET @SNO = @SNO + 1;
END;
有运行效率要求吗?
# 找到所有字段,并列出
select id,rid
from (
select *,row_number() over(partition by 字段1,字段2,字段3..... order by getdate()) rid
from (
select 字段1,字段2,字段3.....
from 表A
where 范围
union all
select 字段1,字段2,字段3.....
from 表B
where 范围
) a
) a
where rid>1
双循环,由现在的循环10次变成循环100次,10段*10段,执行代码是这样的,肯定有问题,需要修改
DECLARE @SNO INT = 1;
WHILE @SNO<11
DECLARE @GroupID INT = 1;
WHILE @GroupID<11
BEGIN
INSERT INTO Result007
select NoText FROM AAA a
where exists ( select 1 FROM BBB b WHERE a.NoText = b.NoText
AND B.KID BETWEEN (1+40642560*(@SNO-1)) AND 40642560*@SNO )
AND A.ID BETWEEN (1+54396352*(@GroupID-1)) AND 54396352*@GroupID;
SET @GroupID=@GroupID+1
END;