用于检查POST_META表中的POST是否设置了元键的SQL查询

时间:2013-07-09 作者:Akhilesh

条件:某些帖子具有meta\\u键“状态”。请帮我解决这个问题:sql查询那些没有meta\\u键“status”的帖子

2 个回复
SO网友:s_ha_dum

纯SQL问题是离题的,但除此之外,纯SQL是危险的,因为如果WordPress核心更改数据库结构,它可能会崩溃。

您最好尽可能使用核心工具。在这种情况下,WP_Query 可以做你需要的事。

$args = array(
  \'post_type\' => \'post\',
  \'meta_query\' => array(
    array(
      \'key\' => \'status\',
      \'value\' => null,
      \'compare\' => \'NOT EXISTS\'
    )
  )
);
$query = new WP_Query( $args );
将生成以下SQL:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
LEFT JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id
                          AND wp_postmeta.meta_key = \'status\')
WHERE 1=1
  AND wp_posts.post_type = \'post\'
  AND (wp_posts.post_status = \'publish\')
  AND (wp_postmeta.post_id IS NULL)
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC LIMIT 0,3

SO网友:Nabeel Khan

我知道很老了,但我刚刚修好了!

select * from wp_posts
where id not in
(select distinct post_id from wp_postmeta where meta_key=\'_your_meta_key\')
注意(对于高效的投票人):请阅读他最初提出的关于“sql查询”的海报问题,不要再投票了,因为你不了解问题的要求

结束