SQL初心者です。
データベースはmySQLです。
2つのテーブルを組み合わせ、掲載終了日(end_date)が来たとき、公開フラグ(koukai_flg)を0にするという更新を行いたいです。
UPDATE TABLE1
SET koukai_flg = 0
FROM TABLE1
INNER JOIN TABLE2
ON TABLE1.site_id = TABLE2.site_id
WHERE koukai_flg = 1
AND end_date < now()
2つのテーブルを結合してアップデート、を試してみたところうまくいかずに困っています。
どなたかお詳しい方、ご回答よろしくお願いします。
何のデータベースシステムを使用しているか明示しましょう。(MySQLとかOracleとかPostgreSQLとかMicrosoft SQL Serverとか)日時を扱う関数の仕様がそれぞれ違っていたりします。
失礼しました、heidiSQLです。
質問に関する追加情報はこのコメント欄ではなく、質問文への追記、修正で書きましょう。そうすることで質問内容がより明確になります。それと、heidiSQLとはどうもRDBMSそのものではなく、単なるGUIの管理ソフトのようです。そのソフトが接続しているDBそのものの種類(製品名)を明示してください。
heidiSQLは管理ツールです。使用しているDBMSの種類が必要です。
編集しました、ご指摘ありがとうございます。
また、最初の質問はnow()にしたところ、解決出来ましたので質問を変更させていただきました。
上手くいかないとは具体的に何ですか?
エラーになる?エラーにはならないが更新されない?
エラーになってしまいます。
koukai_flg やend_dateはどっちのテーブルの項目ですか?
テーブルの定義も明示して下さい。
テーブルを定義したところ、解決出来ました。ありがとうございました。
成り行きに着いていけなかった。。。そもそもテーブルを定義(CREATE TABLE ...)してなかった、ということ?でしょうか。
@dodox86さん
せめてどのようなエラーなのかが分かればですけど、解決理由がさっぱりわかりませんよね。
where 以降の条件文(end_dateなど)に、どのテーブルのものかを定義したところ(TABLE1.end_dateなど)、解決することができました。
言葉足らずですみませんでした、次回以降からはどんなエラー文なのかも記入するように気を付けます。
ありがとうございます。
ベストアンサーの内容では解決しないので、自己解決にされた方が、後学者が誤解されずに済みます。
※inner joinは取り入れられたのかもしれませんが。
記載しました。
回答2件
あなたの回答
tips
プレビュー