2016-01-14 67 views
0

對於Wordpress項目,我想將多個查詢合併爲一個使用子查詢。我正在使用MySQL 5.5.42。第一種情況是查詢表wp_categories中的member_ids列表,然後使用結果列表查詢wp_postmeta表中的post_id列中的匹配ID。Mysql按子查詢返回的列表查詢

我所擁有的就是這個至今

SELECT post_id 
FROM wp_postmeta 
WHERE meta_value IN ( 
    SELECT member_ids 
    FROM wp_categories 
    WHERE id=140) 
AND meta_key='bizid' 

這似乎是空手而歸,不過,當我與一個有效的值替換子查詢,我得到有效的結果。

編輯: 這個答案已經離開我與查詢解決方案(https://stackoverflow.com/a/22375303/1817379):

SELECT post_id, meta_key 
FROM wp_postmeta, wp_categories 
WHERE wp_categories.id = 140 
    AND FIND_IN_SET(wp_postmeta.meta_value, wp_categories.member_ids) 
    AND wp_postmeta.meta_key ='bizid' 

另外,感謝@ sa289的線索:原來的子查詢返回一個字符串,而不是一個列表, IN子句不會處理的東西。

回答

1

嘗試自行運行子查詢並查看返回的內容。

子查詢有可能沒有返回結果,或者返回的結果在子查詢返回的member_ids的wp_postmeta表中沒有meta_key'bizid'。

編輯:

或者如果wp_categories表中的列member_ids有任何給定行不止一個member_id,那麼它將無法工作。如果是這種情況,請更改它,以便每行有一個member_id。

+0

嗯,子查詢的作品,當我手動插入值我得到一個有效數量的結果。 – lintuxvi

+1

@lintuxvi我已更新我的答案,以包含新的可能性 – sa289

+0

member_ids * does *在列表中有多個值。謝謝你的提示!經過一番搜索,我遇到了這個突出的答案:http://stackoverflow.com/a/22375303/1817379。我仍然想知道爲什麼當子查詢與IN子句一起使用時,列表成爲問題。 – lintuxvi