重复当我执行我的“选择联盟选择”,我得到正确的行数(156) 独立执行,选择#1返回65行,并选择#2返回138行。SQL服务器 - 将与选择和工会 - 插入
当我使用“选择联盟选择”用INSERT INTO,我得到203行(65 + 138)与重复。
我想知道这是否是导致这个问题我的代码结构?
INSERT INTO dpapm_MediaObjectValidation (mediaobject_id, username, checked_date, expiration_date, notified)
(SELECT FKMediaObjectId, CreatedBy,@checkdate,dateadd(ww,2,@checkdate),0
FROM dbo.gs_MediaObjectMetadata
LEFT JOIN gs_MediaObject mo
ON gs_MediaObjectMetadata.FKMediaObjectId = mo.MediaObjectId
WHERE UPPER([Description]) IN ('CAPTION','TITLE','AUTHOR','DATE PHOTO TAKEN','KEYWORDS')
AND FKMediaObjectId >=
(SELECT TOP 1 MediaObjectId
FROM dbo.gs_MediaObject
WHERE DateAdded > @lastcheck
ORDER BY MediaObjectId)
GROUP BY FKMediaObjectId, CreatedBy
HAVING count(*) < 5
UNION
SELECT FKMediaObjectId, CreatedBy,getdate(),dateadd(ww,2,getdate()),0
FROM gs_MediaObjectMetadata yt
LEFT JOIN gs_MediaObject mo
ON yt.FKMediaObjectId = mo.MediaObjectId
WHERE UPPER([Description]) = 'KEYWORDS'
AND FKMediaObjectId >=
(SELECT TOP 1 MediaObjectId
FROM dbo.gs_MediaObject
WHERE DateAdded > @lastcheck
ORDER BY MediaObjectId)
AND NOT EXISTS
(
SELECT *
FROM dbo.fnSplit(Replace(yt.Value, '''', ''''''), ',') split
WHERE split.item in (SELECT KeywordEn FROM gs_Keywords) or split.item in (SELECT KeywordFr FROM gs_Keywords)
)
)
我将不胜感激任何线索为解决这个问题...
谢谢!
自身产生的'SELECT'语句应返回相同的结果。你确定查询返回不同的结果时,它自己执行,而不是用于插入到您的表中吗?这对我来说似乎是不可能的...... – 2012-03-26 18:20:22
是的,我确定选择和联盟是可以的。这就是为什么我想知道这是否是某种“操作顺序”问题。但是我只是做了一些更多的测试,如果我直接从SQLServer调用我的sproc,结果不好,但是当我在查询中运行代码时,它工作正常。 – crichard 2012-03-26 18:25:18