アプリ版:「スタンプのみでお礼する」機能のリリースについて

mysqlのupdate構文についての質問です。

写真がテーブルとなってます

ACCOUNTテーブルの日付が最新かつ残高(BALANCE)がNULLのデータの残高を50000に更新したいです。

UPDATE ACCOUNT SET BALANCE=50000 WHERE
DATE=(SELECT MAX(DATE) FROM ACCOUNT WHERE BALANCE=NULL)tmp);
で動かすとエラーはありませんでしたが変化なしとなりました。

間違っている原因と正しい文章わかる方居ましたらご回答よろしくお願いいたします。

「mysqlのupdate構文についての質」の質問画像

A 回答 (5件)

画像のNULLってnullじゃなくて文字列なんですか?



なら
UPDATE ACCOUNT SET BALANCE = 50000 WHERE DATE = ( SELECT MAX(DATE) FROM ACCOUNT WHERE BALANCE = 'NULL' );
    • good
    • 0

文字列としてNULLを入れたければシングルクォートで囲まないとだめです。

    • good
    • 1
この回答へのお礼

ありがとうございます! ちなみに他の方が教えていただいた文入力しても上手くいかなかったのですが正しい文章って分かりますか?

お礼日時:2024/01/10 14:42

NULLかどうかの判定は等号や不等号ではなく、IS NULLならびにIS NOT NULLと書かないといけません。

    • good
    • 1
この回答へのお礼

なるほど! 文字としてNULLにアップデートは出来たけどサーバーに認識させるためにはIS NULLが必要っていうことですかね?

お礼日時:2024/01/10 13:17

UPDATE ACCOUNT SET BALANCE = 50000 WHERE DATE = ( SELECT MAX(DATE) FROM ACCOUNT WHERE BALANCE IS NULL );



でどう?
https://mysql.sql55.com/sql/mysql-is-null-operat …

そもそも
> SELECT MAX(DATE) FROM ACCOUNT WHERE BALANCE=NULL;
のSQLだけを実行して値が取れるかどうか、ですかね。
    • good
    • 1
この回答へのお礼

他の方からも指摘あったNULLですね! サーバーにはIS NULLじゃないと認識してくれないんですね!

お礼日時:2024/01/10 13:18

とりあえずヒント。


テーブルの値を日付で並べ替えてみましょ。
で、目視で値を確認。

こうすれば、本当に値が変わってほしい箇所を特定できる。

デバッグってのはそうやって、不確定な要素を一つひとつ除外してシンプルな状態にまで持っていって行います。
    • good
    • 1
この回答へのお礼

ありがとうございます! そもそも構文だったりルールが把握しきれて無かったです笑

お礼日時:2024/01/10 13:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A