$sql = 'SELECT c.is_check' .
' FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' .
' LEFT JOIN ' . $GLOBALS['ecs']->table('cart') . ' AS c ON c.goods_id = g.goods_id ' .
' WHERE g.enter_mode = 3105 AND c.user_id = $user_id';
如上 sql 语句是通过 cart
表和 goods
表的一些条件查询出 cart
表中符合条件的 is_check
字段。
我现在想将这个字段里的值统一更新为我前台传过来的 $is_chick
,该怎么实现尼?
或者说能不能直接用 updata
语句实现尼?
これに似ています、sql语句你自己调试が必要です
更新は書き込みロックであるため、複雑な SQL を使用することはお勧めできません。
select ステートメントを使用して主キーを見つけてリストに追加し、別の
update car set ... id in (1,2,3,4)
ステートメントを使用して、数量が 200 を超える場合は、一括更新を使用してください。内部結合を更新します (b から yy を選択) c on a.id =b.id set a.xx = c.yy
生成された SQL を入力します
これは、update ステートメントを通じて実現できます。
私は @seanlook の回答に同意します。運用環境では複雑な SQL を作成しないでください。@prolifes の回答でも目標は達成できますが、同時実行性が高く大量のデータがある場合は、長期ロックが発生する可能性があります。
当社の一般的なアプローチは、まず条件に基づいて主キーを見つけ、次に主キーに基づいて対応するフィールド値を更新することです。
この要件は、UPDATE + JOIN によって実現できます。おおよその SQL は次のとおりです。
詳細については、私が最近書いた記事を参照してください https://mp.weixin.qq.com/s?__... その一部はこの問題に関連しています