仅存在时插入(具有相同的ID)

时间:2015-07-31 22:45:19

标签: mysql

我有一个包含这些字段的表格:

meta_id | post_id | meta_key | meta_value

这实际上是一个WordPress postmeta 表。

有些帖子有 postmeta 条目,其中meta_key为_price。我需要的是循环使用表格,插入另一行,使用meta_key = _regular_price,同样的post_id和相同的meta_value。

因此,我检查是否存在具有该meta_key的 postmeta 条目,并添加另一个具有不同meta_key的条目。听起来很简单,但我该如何实现呢?

1 个答案:

答案 0 :(得分:1)

此查询将为具有meta_key ='_ price'的所有帖子插入包含现有post_id的新行和meta_key值'_regular_price'。 meta_id和meta_value列将为null或其默认值(如果存在任何默认约束)。

insert postmeta (post_id, meta_key)
select post_id, '_regular_price' from postmeta p1
where exists (select 1 from postmeta where meta_key = '_price' and p1.post_id = post_id)

如果您打算多次运行它,可能需要添加一个条件,检查是否存在'_regular_price'meta_key:

and not exists (select 1 from postmeta where meta_key = '_regular_price' and p1.post_id = post_id)

Sample SQL Fiddle

相关问题