0

先发制人地为那里的标题道歉……不知道该放什么……

我对 mysql 不是最好的,而且我有一个无法解决的问题。

我有一张表....这是一个 wordpress 网站的元数据表...在表中我存储了 FB 之类的计数和每个帖子的永久链接....所以一个帖子看起来像这样。 ..

+-------------+----------------+-----------------+ ----------------------------------+
| 元ID | post_id | 元密钥 | 元值 |
+-------------+----------------+-----------------+ ----------------------------------+
| 1 | 第446章 _fb_count | 2 |
| 2 | 第446章 _永久链接 | /2013/08/image-aligned-left/446/ |
+-------------+----------------+-----------------+ ----------------------------------+

我想做的是查询这个表并返回这两个值,以便返回的数据是(post_id,Facebook Like Count,Permalink)......所以它看起来像:

+----------------+-----------------+-------------- ------------------+
| post_id | _fb_count | _永久链接 |
+----------------+-----------------+-------------- ------------------+
| 第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

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

4

2 回答 2

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 的适当功能。

于 2013-10-02T04:39:22.743 回答
0

使用以下查询:

SELECT e.post_id, e.meta_value as _fb_count, m.meta_value as _permalink FROM tablee inner join 'table' m where e.meta_key = '_fb_count' and m.meta_key= '_permalink' and e.post_id= m.post_id

于 2013-10-02T04:51:02.117 回答