這是我在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