我有这个查询
SELECT
pm.post_id,
pm.meta_key,
pm.meta_value
FROM
birr_postmeta as pm,
birr_posts as p
WHERE pm.meta_key IN ('ratings_average', 'ratings_users')
AND pm.meta_value <> 0
AND pm.post_id = p.ID
ORDER BY pm.post_id ASC
那让我回来了:
我要从这些表中获取的是这样的
+--------+---------------+--------------+
|post_id | rating_users |rating_average|
+--------+---------------+--------------+
| 7 | 1 | 5 |
| 35 | 3 | 4 |
| 101 | 2 | 4.5 |
| 127 | 2 | 4 |
| 225 | 1 | 4 |
+--------+---------------+------------+
我该如何实现?
答案 0 :(得分:1)
一种方法使用聚合:
SELECT pm.post_id,
MAX(CASE WHEN pm.meta_key = 'ratings_average' THEN pm.meta_value END) as ratings_average,
MAX(CASE WHEN pm.meta_key = 'ratings_users' THEN pm.meta_value END) as ratings_users
FROM birr_postmeta pm
WHERE pm.meta_key IN ('ratings_average', 'ratings_users')
pm.meta_value <> 0
GROUP BY pm.post_id ASC;
请注意,不需要JOIN
。但是,如果要使用一种,则应使用正确的JOIN
语法。