2017-03-14 13 views
-1

IF EXISTS UPDATE ELSE INSERTの文を作成しようとしていますが、UPDATE行でエラーが発生します。私は2つの別々のクエリでこれを行うことができますが、私は何が良いか分からない。MySQLの場合

私はこのガイドに従おうとしましたが、私のクエリの動作を管理していませんでした。 https://blog.udemy.com/sql-if-then/

IF EXISTS 
(
    SELECT 1 
    FROM `table` 
    WHERE 
     `column` = 'value' 
) 
THEN 
(
    UPDATE `table` SET 
     `date` = NOW() 
    WHERE 
     `column` = 'value' 
) 
ELSE 
(
    INSERT INTO `table` SET 
     `date` = NOW(), 
     `column` = 'value' 
) 
END IF 
END 
+0

キーMySQLはCやJavaなどのプログラミング言語ではありませんでしょう。つまり、手続きや関数を書くことができます。この "コード"は現在どこで実行していますか? –

+0

サーバーは 'PHP'を実行します。 – jimasun

+0

@BoundaryImposition:あなたのコメントが建設的なものかどうかは分かりません。 IF文はSQLでは非常に一般的です。 'INSERT' /' UPDATE'も共通です。ちょうど私が私の書く方法を理解できないことです。 – jimasun

答えて

0

これは役に立ちますか?あなたのケースでは

INSERT ... DUPLICATE KEY UPDATE ON

https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

"の欄には、" ユニーク

+0

私は( 'PRIMARY'または' UNIQUE')キーを設定していません。キーの値を知ることは、 'SELECT'クエリを別々に持つことを意味します。編集:私は '列'に 'ユニーク 'を設定することを検討します。 – jimasun

+0

私の列は 'TINYTEXT'なので、キーとして使うことはできません。 – jimasun

+1

VARCHAR(255)ではなくTINYTEXTを使用する特別な理由はありますか? VARCHARはISO標準であり、(TINYTEXTとは異なり)行の一部として格納されるため、余分なメモリオーバーヘッドはありません。 – Jaydee

関連する問題