"select union select"を実行すると、正しい番号または行が得られます #1が選択されて65行を返し、#2を選択します138行を返します。SQL Server - 選択したユニオンの重複を挿入して挿入する
私がこの「select union select」を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'ステートメントは、' INSERT INTO ... SELECT'で使用されたときに同じ結果を返さなければなりません。自分のテーブルに挿入するのに比べてクエリ自体が異なる結果を返すことは確かですか?それは私にとって可能ではないようです... –
はい、私は選択と組合が大丈夫だと確信しています。だから私はそれが何らかの「操作の順序」の問題かどうか疑問に思います。しかし、私はもう少しテストを行いました.SQLServerからsprocを直接呼び出しても結果はOKではありませんが、クエリでコードを実行するとうまくいきます。 – crichard