对那里的头衔进行抢先道歉......不知道该放什么......
我不是最好的mysql,我有一个问题,我无法解决。
我有一个表....这是一个wordpress网站的元数据表... 在表格中,我存储了像计数一样的FB和每个帖子的固定链接....所以它对于一个帖子看起来像这样......
+-------------+----------------+-----------------+----------------------------------+ | meta_id | post_id | meta_key | meta_value | +-------------+----------------+-----------------+----------------------------------+ | 1 | 446 | _fb_count | 2 | | 2 | 446 | _permalink | /2013/08/image-aligned-left/446/ | +-------------+----------------+-----------------+----------------------------------+
我想要查询此表并返回这两个值,以便返回的数据将是(post_id,Facebook Like Count,Permalink)...所以它看起来像:
+----------------+-----------------+----------------------------------+ | post_id | _fb_count | _permalink | +----------------+-----------------+----------------------------------+ | 446 | 2 | /2013/08/image-aligned-left/446/ | +----------------+-----------------+----------------------------------+
我环顾四周,猜测我需要在同一张桌子上进行某种内部联接....但我没有得到我想要的结果......
我试过这样的事情没有成功:
SELECT pl.post_id,pl.meta_value,FBL.meta_value from wp_postmeta pl inner join wp_postmeta FBL on pl.post_id = FBL.post_id WHERE pl.meta_key = '_permalink' OR FBL.meta_key = '_fb_count
任何帮助将不胜感激......
答案 0 :(得分:1)
你必须为那个
使用条件聚合SELECT post_id,
MAX(CASE WHEN meta_key = '_fb_count' THEN meta_value END) `_fb_count`,
MAX(CASE WHEN meta_key = '_permalink' THEN meta_value END) `_permalink`
FROM wp_postmeta
WHERE meta_key IN('_fb_count', '_permalink')
GROUP BY post_id
输出:
| POST_ID | _FB_COUNT | _PERMALINK | |---------|-----------|----------------------------------| | 446 | 2 | /2013/08/image-aligned-left/446/ |
这是 SQLFiddle 演示
但我同意@Rob你可能最好使用WP的相应功能。
答案 1 :(得分:0)
使用以下查询:
SELECT e.post_id,e.meta_value as _fb_count,m.meta_value as _permalink FROM table
e inner join'table'm其中e.meta_key ='_ fb_count'和m.meta_key ='_permalink'和e .post_id = m.post_id