問題があり、フィールドが存在する場合は更新するクエリを1つ作成し、そうでない場合は新しいクエリを挿入します。問題は、IDが一意でないので、私は、私はIFが解決データが存在する場合はUPDATE、それ以外の場合はSQLクエリをINSERT - 外部キーなし
IF EXISTS (select * from wordpress.wp_4_postmeta where post_id=3466 and meta_key='_job_expires')
THEN
update wp_4_postmeta set meta_value='2017-06-25' where post_id=3466 and meta_key='_job_expires'
ELSE
insert into wordpress.wp_4_postmeta (post_id,meta_key,meta_value) values (3466,'_job_expires','2017-09-25')
をEXISTSしようとしたROWCOUNT
UPDATE wordpress.wp_4_postmeta
SET meta_value='01-01-2685'
WHERE post_id=3471
IF @@ROWCOUNT = 0
INSERT INTO wordpress.wp_4_postmeta (post_id,meta_key,meta_value)
VALUES (3471,'_job_expires','2017-09-25')
しかし運とを試みたON DUPLICATE KEY UPDATE
を使用傾けることです。どのように私は1つのクエリでこれを行うことができますか?
さらに、データベーステーブルの画像を添付して、何が起こっているかを確認します。 post_idは一意ではなく、異なるmeta_key-sを持つ多くの同じpost_idが存在する可能性があります。
下の画像に見られるように、運これにinsert into wordpress.wp_4_postmeta (post_id, meta_key, meta_value)
values (3466, '_job_expires', '2011-06-25')
on duplicate key update meta_value='2011-06-25';
と私は私のテーブルに新しい行を持っています
使用しているデータベースで質問にタグを付けます。 –
SQLには「IF」はありません。どのDBMS製品を使用していますか? –
あなたはMERGEでこれを行うことができます – romulus001