mysql,选择两个具有相同id但在另一列中具有不同值的不同行

时间:2013-10-02 04:26:35

标签: mysql join rows

对那里的头衔进行抢先道歉......不知道该放什么......

我不是最好的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

任何帮助将不胜感激......

2 个答案:

答案 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