这是我在SO上的第一个问题。所以我有一个名为posts的MYSQL表格,其列如下:在MYSQL查询中使用GROUP BY和union
post,tag1,tag2。
假设表中有10个总计行。该帖子9在只有标签1标签,以及第十具有TAG1和TAG2(在标签2的标签被复制在TAG1的其他职位。)标签继承人的表会是什么样子:
Tag1 Tag2
computer -
tv -
computer -
tv -
laptop -
bicycle -
stereo -
computer laptop
tv -
laptop -
我想要的功能是查询表格以获取频率最高的标签,将它们分组在一起,然后按照从最高频率到最低频率的顺序进行排序。这里是我的MySQL查询(我使用的PDO):
SELECT count, tag
FROM (SELECT count(tag1) as count, tag1 as tag FROM posts) as a
UNION ALL
SELECT count(tag2) as count, tag2 as tag
FROM posts
此查询不工作,因为它并没有告诉我每个存在的标签,也似乎并没有被添加在一个标签列tag2到tag1的结果,而不是重复。所以我没有看到笔记本电脑出现3次,而是看到笔记本电脑出现两次,然后出现一次。
我想这将由GROUP BY解决,但是当我尝试添加GROUP BY时,mysql会抛出一个通用语法错误,说要查看我的数据库服务器的文档。所以我想我不知道把GROUP BY放在哪里,我可能会认为我的查询根本就不正确。任何可用的帮助,请.... ive看了许多其他问题关于使用组与工会,只是没有找到答案或我不明白这足以知道我什么时候看到答案。
什么是您查询用GROUP BY抛出语法错误? – 2012-08-12 08:19:38
我基本上只是修改上面的查询,在第一个FROM之后有另一个开放的parens,然后是第二个post之后的另一个开始parens,然后添加GROUP BY标记。这没有用,下面的答案让我想要成为我。只是不知道该说什么才是正确的答案,因为他们每个人都帮我弄清楚了。 – Cbomb 2012-08-12 09:35:39