テーブルに不足している行を挿入しようとしています。いずれかの列がOrderNumber
(ソート番号)の場合、この列はテーブルのsID
に返されるOrderNumber
の最大値の+1である必要があります。 sIDs
の一部がSPOL
テーブルに表示されないため、ステートメントの末尾にWHERE
句があります。私はこのステートメントを再び実行しますが、sID
が現在テーブルに存在しないレコードに対してはOrderNumber
を1に設定します。SELECTを使用してINSERT INTOを使用し、列に値を増やす
OrderNumber
のプライマリキーに問題が発生しているため、sID + OrderNumber
という以下の文は機能しません。
sID
の列に基づいて挿入される各行に対して、OrderNumber
をどのようにして増やすことができますか?
INSERT INTO SPOL(sID, OrderNumber, oID)
SELECT
sID, OrderNumber, oID
FROM
(SELECT
sID,
(SELECT Max(OrderNumber) + 1
FROM SPOL
WHERE sID = TMPO.sID) AS OrderNumber,
oID
FROM TMPO
WHERE NOT EXISTS (SELECT * FROM SPOL
WHERE SPOL.oID = TMPO.oID)
) AS MyData
WHERE
OrderNumber IS NOT NULL
いいえスキーマを変更できません。うまくいけば、欠落しているものに対する1つの挿入クエリであるはずです。 – mheptinstall