2014-12-03 36 views
1

我試圖從wordpress表查詢wp_postmeta 我需要從下面的圖片_form_id_sub_id的數據。 我使用這個SQLMySQL查詢從WP_PostMeta行到列

SELECT meta_value, 
MAX(CASE WHEN meta_key = '_field_14' THEN meta_value END) as a1, 
MAX(CASE WHEN meta_key = '_field_15' THEN meta_value END) as a2, 
MAX(CASE WHEN meta_key = '_field_17' THEN meta_value END) as a3, 
MAX(CASE WHEN meta_key = '_field_18' THEN meta_value END) as a4 
FROM wp_postmeta 
Group by post_id 

但A1至A4的NULL數據仍然出現在結果。 我SQL Fiddel 請指教,謝謝

enter image description here

預期的結果 expected result

回答

2

您需要選擇post_id,meta_value中不存在group by所以你會得到一個隨機值從每個發佈

也只有職位54,56,57有這些領域,所以帖子的其餘部分將得到NULL值。

SELECT post_id, 
       MAX(CASE WHEN meta_key = '_field_14' THEN meta_value END) as a1, 
       MAX(CASE WHEN meta_key = '_field_15' THEN meta_value END) as a2, 
       MAX(CASE WHEN meta_key = '_field_17' THEN meta_value END) as a3, 
       MAX(CASE WHEN meta_key = '_field_18' THEN meta_value END) as a4 
       FROM wp_postmeta 
       Group by post_id 

編輯:

按結果,你只是想從有值,你可以使用子查詢和凝聚所有帖子元值,以得到你想要的

SELECT * FROM 
(
SELECT 
     MAX(CASE WHEN meta_key = '_field_14' THEN meta_value END) as a1, 
     MAX(CASE WHEN meta_key = '_field_15' THEN meta_value END) as a2, 
     MAX(CASE WHEN meta_key = '_field_17' THEN meta_value END) as a3, 
     MAX(CASE WHEN meta_key = '_field_18' THEN meta_value END) as a4 
FROM wp_postmeta 
Group by post_id 
)T 
where coalesce(a1,a2,a3,a4) is not null 
+0

謝謝你什麼@雷達但仍然出現a1至a4的NULL,有什麼想法? – vincmeister 2014-12-03 02:59:57

+0

@vincmeister,因爲這些元鍵不存在其他職位,你會得到空值,如果你看到職位54,56,57得到適當的價值。如果你想,只爲特定的數據後通過 – radar 2014-12-03 03:09:37

+0

組之前添加其中POST_ID = 54我想不選擇POST_ID一般的結果,萬一我有40 POST_ID,他們都將出現。相同的參數是meta_key = _form_id,meta_value = 3。有沒有可能查詢?再次感謝 – vincmeister 2014-12-03 03:16:29