SQL-由具有多行的另一个SQL语句分组

时间:2019-03-07 12:24:32

标签: mysql sql database wordpress

我正在尝试通过将不同的元列分组来使Wordpress正常工作的SQL语句。

我有一张有投票表,一张有位置表,一张有一些城市参考链接的表(每个城市可以包含多个位置)。

我试图基于每个大城市对所有投票进行分组,但是在将两个SQL语句合为一体时遇到了一些麻烦。

这是查询以投票数获得前50名的位置:

SELECT Count(*) as Amount, meta.meta_value as Location FROM wp_votes as votes
LEFT JOIN wp_postmeta as meta ON votes.`post_id` = meta.`post_id`
WHERE meta.meta_key = 'location'
AND votes.`post_id` IS NOT NULL AND votes.`post_id` <> 0
GROUP BY meta.meta_value
ORDER BY Amount DESC
LIMIT 50;

这将返回如下响应:

|---------------------|------------------|
|      Amount         |     meta_value   |
|---------------------|------------------|
|       1250          |      Brooklyn    |
|---------------------|------------------|
|       400           |     Manhattan    |
|---------------------|------------------|
|       300           |     Chicago      |

这是根据位置获取城市的查询。它返回一个城市列表(在上面的示例中,它将仅返回纽约),并且在纽约将“包括”布鲁克林,“曼哈顿”这两个位置。

SELECT meta_value FROM wp_posts as location
LEFT JOIN wp_postmeta as city ON city.`post_id` = location.`ID`
WHERE city.`meta_key` = 'reference'
GROUP BY city.`meta_value`;

这里的想法是将这两个查询映射在一起,以便如果第一个查询的位置与第二个查询的位置匹配,则将按城市名称对行进行分组。

因此合并查询的输出为:

|---------------------|------------------|
|      Amount         |     meta_value   |
|---------------------|------------------|
|       1650          |      New York    |
|---------------------|------------------|
|       300           |     Chicago      |
|---------------------|------------------|

这可能吗?

0 个答案:

没有答案