Wordpress SQL语句按meta_value过滤

时间:2015-04-27 21:40:01

标签: sql wordpress

我正在使用以下代码将自定义帖子类型成员(带有自定义字段)导出到CSV文件。成员列表包括不属于特定成员类型“成员”且值为0或1的用户。我想过滤列表以仅导出“成员”等于1,但无法弄清楚如何修改语句以下是这样做的。

global $wpdb;
$sql = $wpdb->get_results( "SELECT *

FROM wp_posts (

SELECT 
    #`wp_posts`.`ID`,

    MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'first_name'
    THEN `wp_postmeta`.`meta_value`
    END ) AS `First Name`,

    MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'last_name'
    THEN `wp_postmeta`.`meta_value`
    END ) AS `Last Name`,

    MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'phone_number'
    THEN `wp_postmeta`.`meta_value`
    END ) AS `Phone Number`,

    MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'email_address'
    THEN `wp_postmeta`.`meta_value`
    END ) AS `Email Address`,

    MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'member'
    THEN `wp_postmeta`.`meta_value`
    END ) AS `Member`

FROM `wp_posts`

LEFT JOIN `wp_postmeta` ON ( `wp_posts`.`ID` = `wp_postmeta`.`post_id` )

WHERE `wp_posts`.`post_status` = 'publish'

AND `wp_posts`.`post_type` = 'member'

GROUP BY `wp_posts`.`ID`

ORDER BY `wp_posts`.`post_title` ASC

) AS `t` WHERE 1 =1
");

1 个答案:

答案 0 :(得分:0)

您是否尝试添加

HAVING MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'member'
THEN `wp_postmeta`.`meta_value`else 0
END ) = 1

之后

GROUP BY

很难告诉wp_posts表的结构但是我假设它的每个post属性都有一行,其中meta_key =属性名称和mety_value = value