2012-01-24 43 views
1

Wordpress/MySql查詢不生成JOIN的左側部分的所有結果我正在MySQL數據庫中工作

我添加了一個自定義字段名爲「SHORT_URL」

我想在數據庫與「SHORT_URL」後話了具有該值的價值以及所有文章列表的WordPress數據庫。但我想要所有的帖子。我組成了以下查詢並使用了一個LEFT連接,這樣即使沒有相應的自定義值,我也能找回所有帖子,但它不起作用。

SELECT 
    wp_posts.post_title 
    , wp_posts.post_date 
    , wp_postmeta.meta_value 
FROM 
    wp_posts 
    LEFT JOIN wp_postmeta 
     ON (wp_posts.ID = wp_postmeta.post_id) 
WHERE (wp_postmeta.meta_key ="short url"); 

此查詢返回12個結果,即有多少文章具有自定義值,但在我的數據庫中有193篇文章。

爲什麼我回來的是隻有具有「short_url」值的職位列表?

如何獲得完整列表?

回答

2

您需要將條件從WHERE子句移到ON子句。 WHERE子句中的條件影響所有結果。 ON子句中的條件影響JOIN。

SELECT 
    wp_posts.post_title, 
    wp_posts.post_date, 
    wp_postmeta.meta_value 
FROM 
    wp_posts 
    LEFT JOIN wp_postmeta 
     ON (wp_posts.ID = wp_postmeta.post_id) AND 
      (wp_postmeta.meta_key ="short url"); 
相關問題