質問;
以下の MySQL クエリでは、ConnectionID のリストを生成する内部クエリが 34 個の ConnectionID を返します。次に、更新として 2 つのクエリを一緒に実行すると、クエリ結果は 14 行のみが影響を受けたことを示しました。UPDATE 関数がどのように間違っているかについての私の理解は間違っていますか?
ノート;
Connections.PartnerID が Partners.PartnerID と等しい特定の接続について、Partners テーブルの DefaultUserType が接続テーブルの RoleID と等しくなるように、データベースを更新しようとしています。
クエリ;
UPDATE Connections
LEFT JOIN Partners
ON Connections.PartnerID = Partners.PartnerID
SET Connections.RoleID = Partners.DefaultUserType
WHERE
ConnectionID IN(
SELECT
sub_qu_1.ConnectionID
FROM
(
SELECT DISTINCT
Connections.ConnectionID,
Connections.MemberID,
Connections.FriendID,
Connections.RoleID,
Partners.DefaultUserType,
IF(Connections.RoleID = Partners.DefaultUserType,0,1)AS not_equal
FROM
Connections
LEFT JOIN Contacts ON Connections.FriendID = Contacts.EEID
LEFT JOIN Partners ON Contacts.PartnerID = Partners.PartnerID
WHERE
Partners.DefaultUserType NOT IN (28,29,30)
)AS sub_qu_1
WHERE
not_equal = 1
AND DefaultUserType IS NOT NULL
)