2

この SELECT ステートメントを実行すると、642 行が返されます...

SELECT *
FROM _DevLoadIn a
JOIN ArticleCompanyList b ON b.Company = a.Name

この UPDATE ステートメントを実行すると、630 行だけが更新されます...

UPDATE b
SET b.BGCompanyId = a.RelatedId
FROM _DevLoadIn a
JOIN ArticleCompanyList b ON b.Company = a.Name

JOIN は同じですが、影響を受ける行の数はどのように異なるのでしょうか? どちらのステートメントもエラーなしで実行されます。これがどのように可能になるかわかりません。誰でも洞察を提供できますか?更新/結合の仕組みについて何か不足していますか?

4

2 に答える 2

3

最良の推測は、B の各値に対して A にさらに多くの一致があることです。したがって、selectステートメントは A の結合された複製を返しますがupdate、行を 1 回だけ更新します。

つまり、select の追加の値は B (A ではない) の表現です。

----更新された投稿の質問の編集-----

正しい値を更新していますか? 適切なテーブル (A または B) が update ステートメントの左側にあることを確認してください。質問を編集し、最初に投稿された場​​所を変更したようです。ただし、理論は同じです。

于 2012-10-08T16:16:04.043 に答える
0

b.BGCompanyId が既に a.RelatedId と等しい場合、更新済みとして表示されません。

元のクエリを次のように変更することで、これを確認できます。

SELECT *
FROM _DevLoadIn a
JOIN ArticleCompanyList b ON b.Company = a.Name
WHERE b.BGCompanyID != a.RelatedId

于 2012-10-08T16:16:49.427 に答える