[英]SQL JOIN on same table with 2 conditions
我需要將2列合並為1行。 列之間的鍵是post_id
。
這是我的桌子(postmeta):
post_id meta_key meta_value
36 cp_state California
37 cp_state Illinois
38 cp_state California
39 cp_state California
40 cp_state California
36 cp_city Los Angeles
37 cp_city Chicago
38 cp_city San Diego
39 cp_city San Diego
40 cp_city Los Angeles
這是即時通訊試圖輸出的內容:
post_id state city
36 California Los Angeles
37 Illinois Chicago
38 California San Diego
39 California San Diego
40 California Los Angeles
這是我使用的SQL,但得到了瘋狂的結果:
SELECT a.post_id AS pID, a.meta_value AS state, b.meta_value AS city
FROM $wpdb->prefix"."postmeta AS a
LEFT JOIN $wpdb->prefix"."postmeta AS b
ON b.post_id = a.post_id
WHERE a.meta_key = 'cp_state'
AND b.meta_key = 'cp_city'
在使用的實時Wordpress表中,顯然還有數百個其他meta_key
,因此我需要它僅針對這2個meta_key
( cp_city
, cp_state
)進行過濾
您應該使用INNER JOIN而不是LEFT JOIN
SELECT a.post_id AS pID, a.meta_value AS state, b.meta_value AS city
FROM $wpdb->prefix"."postmeta AS a
INNER JOIN $wpdb->prefix"."postmeta AS b
ON b.post_id = a.post_id
WHERE a.meta_key = 'cp_state'
AND b.meta_key = 'cp_city'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.