- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件にあった(複数行) 行をUPDATEしたい)
【SQL】UPDATE条件でユーザーの支払ステータスを締め日に更新する方法
このQ&Aのポイント
- ユーザーの支払ステータスを締め日に更新するためのSQLの方法を教えてください。
- 条件として、7月給与の締めを行う時に、ステータスが未払いで日給の合計が1万円以上のユーザーに対して、ステータスを締め日に更新したいです。
- 現在使用しているMYSQLのバージョンでは、サブクエリは使えないため、別の方法で実現したいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ユーザー、作業日でユニーク属性をつけておけばREPLACEで処理できます。 テンポラリをうまくつかうとよいでしょう。 ALTER TABLE `バイト給与テーブル` ADD UNIQUE (`ユーザー` ,`作業日`); (これは1回やっておけばよい) CREATE TEMPORARY TABLE `TEMP_支払い` SELECT ユーザー AS `支払発生ユーザー` FROM `バイト給与テーブル` WHERE `ステータス` = '未払い' GROUP BY `ユーザー` HAVING SUM(`日給`) >= 10000; CREATE TEMPORARY TABLE `TEMP_変換` SELECT `ユーザー`,`作業日`,'支払済' AS `ステータス`,`日給`,'2006-07-31' AS `締め日`,NULL AS `支払日` FROM `バイト給与テーブル` INNER JOIN `TEMP_支払い` ON `支払発生ユーザー`=`ユーザー`; REPLACE `バイト給与テーブル` SELECT * FROM `TEMP_変換`;
お礼
回答ありがとうございます。 教えて頂いた方法で試して見たいと思います。
補足
書き込みが遅くなりすみません。 教えて頂いた方法で試した結果うまく処理出来ました。 TEMPORARY TABLE 、REPLACEともに今まで使った事がなかったので、 今回教えて頂いた事は、とても勉強になりました。 特にTEMPORARY TABLEの応用範囲はひろそうですね。 ありがとうございました。