• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件にあった(複数行) 行をUPDATEしたい)

【SQL】UPDATE条件でユーザーの支払ステータスを締め日に更新する方法

このQ&Aのポイント
  • ユーザーの支払ステータスを締め日に更新するためのSQLの方法を教えてください。
  • 条件として、7月給与の締めを行う時に、ステータスが未払いで日給の合計が1万円以上のユーザーに対して、ステータスを締め日に更新したいです。
  • 現在使用しているMYSQLのバージョンでは、サブクエリは使えないため、別の方法で実現したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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_変換`;

yoshi_t
質問者

お礼

回答ありがとうございます。 教えて頂いた方法で試して見たいと思います。

yoshi_t
質問者

補足

書き込みが遅くなりすみません。 教えて頂いた方法で試した結果うまく処理出来ました。 TEMPORARY TABLE 、REPLACEともに今まで使った事がなかったので、 今回教えて頂いた事は、とても勉強になりました。 特にTEMPORARY TABLEの応用範囲はひろそうですね。 ありがとうございました。

関連するQ&A