我有以下表格:
风扇
id, id_page, number_of_fans, created_at
此表有许多相同的id_page
,但在created_at
网页
id, id_facebook, id_keyword, is_processed (0/1)
关键字
id, keyword, category
我正在尝试/尝试子查询,但我没有得到我想要的结果,有时候查询因为它的复杂性而非常慢。
我希望结果:
created_at
) - (每页仅从表fans
返回1行) - number_of_fans
逐页fans
并得到总和按number_of_fans
keyword
keyword
keyword
is_processed
= 1 如何在MySQL中只将1个查询的结果与1,2,3结合起来?
谢谢。
此致 bhadz
答案 0 :(得分:0)
您正在寻找Fans
表中的groupwise maximum:可以通过逐页分组并选择最大created_at
值找到它,然后将其连接回Fans
表以获取该最大记录中的其他列:
SELECT Keyword.keyword,
SUM(Fans.number_of_fans) fans_of_all_pages,
SUM(IF(Page.is_processed,Fans.number_of_fans,0)) fans_of_processed_pages
FROM Fans NATURAL JOIN (
SELECT id_page, MAX(created_at) AS created_at
FROM Fans
GROUP BY id_page
) t
JOIN Page ON Page.id = Fans.id_page
JOIN Keyword ON Keyword.id = Page.id_keyword
GROUP BY Keyword.id