所以我已經到處搜索這個,但我找不到這個特定的關係。下面的查詢返回用戶的所有帖子以及喜歡該帖子的人數,因爲我使用了GROUP BY postid
,這意味着如果結果重複其自身但具有相同的postid
,那麼它們將被分組。MYSQL得到所有分組結果一個查詢與行數
SELECT posts.id postid,posts.post_body,posts.post_type, ALLUSERS.USERNAME,
likes.liker,likes.target,
plikers.*,
COUNT(posts.id) numberOflikes
FROM posts
INNER JOIN ALLUSERS ON(ALLUSERS.USERID=posts.FROM_userid)
LEFT JOIN likes ON(likes.target=posts.id)
LEFT JOIN(SELECT USERID pl_id FROM ALLUSERS)plikers ON(pl_id=likes.liker)
GROUP BY postid
,結果是...
+--------+-----------------+------------------------+-----------+-------+--------+-------+-----------+---------------+
| postid | post_body | post_type | USERNAME | liker | target | pl_id | pl_un | numberOflikes |
+--------+-----------------+------------------------+-----------+-------+--------+-------+-----------+---------------+
| 83 | Southgate | 20&&03 Saturday/04:05 | Superuser | NULL | NULL | NULL | NULL | 1 |
| 84 | Great post! | 10&&03 Saturday/04:07 | Superuser | 4 | 84 | 4 | dennisrec | 7 |
| 85 | How delightful? | 10&&03 Saturday/04:07 | Superuser | 43 | 85 | 43 | zerCon | 1 |
| 87 | Cheers... | 10&&07 Wednesday/01:53 | Superuser | NULL | NULL | NULL | NULL | 1 |
| 88 | check this out! | 20&&07 Wednesday/03:31 | Superuser | NULL | NULL | NULL | NULL | 1 |
+--------+-----------------+------------------------+-----------+-------+--------+-------+-----------+---------------+
這是正確的,但這種只返回分組的第一個結果。 那麼任務站,有沒有什麼辦法可以返回一個查詢中所有組的所有結果?
現在顯然我可以只取出GROUP BY
和count(*)
短語,則get multiple duplicate results
然後過濾他們獲得那個職位的likers
的所有細節,但是這肯定會慢,我的服務器了。所以我已經嘗試過了。
任何幫助將非常感激。
你可以用'GROUP_CONCAT(喜歡的。類似器)...'。但是,如果數據量增大,則需要調整「GROUP_CONCAT」的容量。 – 1000111
您當前的查詢沒有意義,因爲您正在使用「GROUP BY」選擇非聚合列。 –
@TimBiegeleisen @TimBiegeleisen它確實有意義,我得到的結果受到「GROUP BY」的影響,但它將所有組合並選擇每個組的第一個結果,如果我刪除它將返回所有結果,但重複的行匹配,但我只是想只抓取likers表中的userid字段。有什麼難以理解的? – Dennisrec