2011-04-14 208 views
2

我使用通用的wordpress sql语句来获取帖子标题。我想用一个seo插件中的allme的postmeta值来替换帖子标题,这是一个全部在seo标题中存在的帖子。在mysql语句中使用if语句

如何在sql命令中使用if语句?

现有代码没有全部在一个if语句。

//Limit to last 30 days, 1,000 items      
$rows = $wpdb->get_results("SELECT $wpdb->posts.ID, $wpdb->posts.post_date_gmt, $wpdb->posts.post_title 
        FROM $wpdb->posts, $wpdb->postmeta 
        WHERE $wpdb->posts.post_status='publish' 
        AND (DATEDIFF(CURDATE(), post_date_gmt)<=30) 
        $includeMe 
        ORDER BY $wpdb->posts.post_date_gmt DESC 
        LIMIT 0, 1000");  

这是菲尔的回答:

$rows = $wpdb->get_results("SELECT COALESCE($wpdb->postmeta.meta_value, $wpdb->posts.post_title) AS post_title, $wpdb->posts.post_date_gmt, $wpdb->posts.ID 
        FROM $wpdb->posts 
        LEFT JOIN $wpdb->post_meta 
        ON $wpdb->posts.ID = $wpdb->postmeta.post_id 
        AND $wpdb->postmeta.meta_key = '_aioseop_title' 
        WHERE $wpdb->posts.post_status='publish' 
        AND (DATEDIFF(CURDATE(), post_date_gmt)<=30) 
        $includeMe 
        ORDER BY $wpdb->posts.post_date_gmt DESC 
        LIMIT 0, 1000");  

回答

1

后得到一个错误,现在的新功能我在post_meta表使用COALESCE()LEFT JOIN。例如(注意,一般只能查询,不能直接获得WordPress)

SELECT COALESCE(post_meta.value, posts.title) AS title 
FROM posts 
LEFT JOIN post_meta 
ON posts.id = post_meta.post_id 
AND post_meta.key = 'some_meta_key' 
+0

酷感谢 - 现在要尝试 - 之前从未见过聚结()函数。 – 2011-04-14 02:11:24

+0

菲尔,我只是改变了我的功能,我收到一个错误 - 我将把它重新发回问题 - 你介意看看吗? – 2011-04-14 02:58:06

+0

什么是错误? – squawknull 2011-04-14 03:04:00