重複當我執行我的「選擇聯盟選擇」,我得到正確的行數(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