

以下のようなSQLを実施したいのですが、現在、in句内のSQLを別で取得（40万件）し、ユーザIDとユーザ区分を条件に1件ずつ繰り返して個人情報を更新しています。  
これだとSQL発行が40万回発生するため、下記のSQLで1回実行で済むようにしたいです。  
CakePHPだとどのように記載するのでしょうか？

[code]

    update 個人情報 set 削除フラグ = 1 
    where (ユーザID, ユーザ区分) in ( 
            select
                a.ユーザID,
                b.ユーザ区分 
            from
                ユーザ a 
            inner join 区分 b 
                on a.ユーザ区分 = b.ユーザ区分
        )
    
[/code]

[code]

    foreach ($personalList as $personal) {
                $this->PersonalInfo->updateAll(
                    [   
                        '削除フラグ' => '0',
                    ],
                    [
                        'ユーザID' => $personal->userId,
                        'ユーザ区分' => $personal->userKbn,
                    ]
                );
    }
    
    
[/code]


CC BY-SA 4.0
2022-12-28T05:08:31.827
93063
2022-12-28T05:08:31.827
55476
question
cakephp postgresql
CakePHPのSQLの更新方法について