1
我试图运行查询来更新WordPress wp_postmeta表中的自定义字段的值。数据是这样的:通过缺少值筛选结果
meta_id post_id meta_key meta_value
------- ------- ------- ----------
1 1 start_date 2011-12-30
2 1 start_time 21:00
3 363 start_date 2011-12-29
4 363 start_time 21:00
5 363 _start_timestamp 2011-12-29 21:00
我想提出一个查询,以添加一条记录与meta_key
值_start_timestamp
结合的start_date
和start_time
值对于给定POST_ID,但只有在情况下_start_timestamp
尚未设置。
在进入INSERT查询之前,我试图得到一个SELECT查询来显示我想要的东西。我设法做出了一个SELECT查询,它返回的是具有_start_timestamp
定义的帖子ID,但无法弄清楚如何得到没有定义的帖子ID。
这是我有:
SELECT
a.post_id,
CONCAT(a.meta_value, ' ', b.meta_value),
c.meta_value
FROM
wp_postmeta a
INNER JOIN wp_postmeta b ON a.post_id=b.post_id
INNER JOIN wp_postmeta c ON a.post_id=c.post_id
WHERE
a.meta_key = 'start_date'
AND b.meta_key = 'start_time'
AND c.meta_key='_start_eventtimestamp'
这将返回
post_id CONCAT(a.meta_value, ' ', b.meta_value) meta_value
363 2011-12-29 21:00 2011-12-29 21:00
如何指定得到的结果,只有当_start_timestamp
中不存在一个给定的post_id
列meta_key
?在这种情况下,它应该只返回post_id
1.
这就行了!我只是好奇,是否有更简单的方法来完成这个任务,或者两个JOIN没有出路?绝对菜鸟在SQL这里... – englebip 2011-12-13 18:05:28