0

私は他の投稿を読んだことがありますが、それはとても単純なステートメントであるため、ここで私が間違っていることを本当に理解していません。

'()'内のすべてはコメントです

クエリ:

[UPDATE users, sites 
SET users.idSiteRegUsers='1'
WHERE sites.SiteActivateSites='DEL' ]

(クエリ全体で更新するように選択するTBL)(ユーザーのtbl idSiteRegUsersを1に設定)(tblサイトのサイトのみ= DEL)

また、 http://bugs.mysql.com/bug.php ?id = 52651を読み、バグのためにINTをVARCHARに、UPDATING 0をDELに変更しようとしましたが、それでも同じ結果になります。

問題:

結果の数を理解するために単純なselectステートメントを使用して見つかった更新が必要な2129レコードがあります。

([SELECT
sites.SiteActivateSites,
sites.id_Sites,
users.idSiteRegUsers,
users.CompanyNameUsers,
sites.LinkNameSites
FROM
users
INNER JOIN sites ON users.idSiteRegUsers = sites.id_Sites
WHERE
sites.SiteActivateSites != '1']) 'simple'

ただし、UPDATEクエリは、4000以上のすべてのレコードを更新します。これは、= DELであるレコードだけでなく、別の値(= 1など)を参照しているレコードも更新します。

私は何かを逃したことがありますか?

乾杯、ジョー

4

1 に答える 1

1

コマンドと同様にSELECT、テーブルがどのように結合されているかをMySQLに伝える必要があります。UPDATE現在、両方のテーブルの完全なデカルト積を実行しています(すべての行がのすべての行とusers結合されているsitesため、WHERE条件フィルタリングをオンにしsitesても、一致する結果になります)からのすべてのレコードusers

代わりに試してください:

UPDATE users JOIN sites ON users.idSiteRegUsers = sites.id_Sites
SET    users.idSiteRegUsers='1'
WHERE  sites.SiteActivateSites='DEL'
于 2012-04-28T18:32:41.473 に答える