それは非常に簡単な質問です。向いている挿入の2つの多くの行のエラー
INSERT INTO crm.dbo.UPDATE_DATA(NAME,OLD_ID)
VALUES (
( SELECT s.NAME FROM crm.dbo.SURROGATE as s
INNER JOIN crm.dbo.UPDATE_DATA ON (s.ID != crm.dbo.UPDATE_DATA.OLD_ID)
WHERE crm.dbo.UPDATE_DATA.OLD_ID IS NULL
),
( SELECT SURROGATE.ID FROM crm.dbo.SURROGATE
LEFT JOIN crm.dbo.UPDATE_DATA ON (crm.dbo.SURROGATE.ID = crm.dbo.UPDATE_DATA.OLD_ID)
WHERE crm.dbo.UPDATE_DATA.OLD_ID IS NULL
)
)
iは誤差以下、上記のクエリは
を発生実行するサブクエリは複数の値を返し。 サブクエリが、=、!<、< =、>、> =、またはサブクエリが式 として使用されている場合は、これは許可されません。
私はエラーを理解することができますが、サブクエリは複数の行を返します。一方、それは1行ずつ挿入します。
解決策は何ですか?内部結合を適用することによって、左結合の代わりに、エラーは発生しません。だから問題はその解決策が内部結合である理由です。どうして他にはないの?私はそれに内部結合を適用したくないです。大量のコンテンツにごめんなさい。しかし、事前に感謝します
サブクエリーの代わりに左の結合を実行します。または、サブクエリが1行だけを返すようにします。 – jarlh
まず、selectの結果を挿入する場合は、 'VALUES'を使用しないでください。代わりに、reuiredとして名前とIDを返す1つのクエリを定義し、 'INSERT INTO crm.dbo.UPDATE_DATA SELECT ... 'で挿入します。第二に、テーブル構造を見ておくと便利です。 – Tyron78
ありがとうございましたjarlhその作業最初にあなたは私にその解決策を提案しますので、それに答えてください。私は受け入れられた答えとしてそれをマークします。あなたがしたくない場合は、私はジャヤシリアの答えを受け入れてマークします – Ahmad