我基本上是在尝试将此 sql 语句转换为能够每天多次运行它而不会复制结果。我没有编写代码,并且我尝试了一些 IF NOT EXISTS 语句,但没有获得正确的语法。请让我知道需要做什么才能插入结果,前提是它们当前不存在于表中。谢谢您的帮助。
INSERT INTO Product_SpecificationAttribute_Mapping
(ProductId, SpecificationAttributeOptionId, AllowFiltering, ShowOnProductPage, DisplayOrder)
SELECT PD.Id AS ProductId,
sao.Id AS SpecificationAttributeOptionId,
'1' AS AllowFiltering,
'0' AS ShowOnProductPage,
sao.DisplayOrder AS DisplayOrder
FROM Product as PD
join (
select id,
name,
ymin as pcmin,
case when ymax < ymin then 99 else ymax end as pcmax,
case when ymax < ymin then 0 else ymin end as ccmin,
ymax as ccmax
from (
select id,
name,
convert(int, SUBSTRING(name, loc-2, 2)) as ymin,
convert(int, SUBSTRING(name, loc+1, 2)) as ymax
from (
select id,
name,
loc
from (
select id,
name,
CHARINDEX('-', name) as loc
from PRODUCT
where CHARINDEX('-', name) > 0
) as tbl
where SUBSTRING(name, loc-3, 1) = ' '
and SUBSTRING(name, loc+3, 1) = ' '
) as rng
) as yrs
) as PdRng
on PdRng.id = PD.id
join (
select *
from SpecificationAttributeOption
where isnumeric(Name) > 0
and len(rtrim(Name)) = 4 AND SpecificationAttributeOption.SpecificationAttributeId = '7'
) as sao
ON convert(int, Right(sao.Name, 2)) between PdRng.pcmin and PdRng.pcmax
OR convert(int, Right(sao.Name, 2)) between PdRng.ccmin and PdRng.ccmax