2012-04-17 60 views
1

我希望得到我遇到的排名查詢的一些解釋。我有一個類似的設置,我有一個點字段,我想要命令,但不能爲我的生活理解此查詢:http://www.artfulsoftware.com/infotree/queries.php#460需要MySQL排名查詢的一些解釋

我不明白什麼連接實際上在做什麼,以及爲什麼如果我不通過陳述包含這個組,我只會得到一個完全混亂和不正確的記錄。我總是看到集團通過報表限制結果的數量,但此查詢似乎是將其添加到最終的結果集(且不包括羣組通過,你會得到一個返回行)

回答

1

查詢基本上是這樣做的:

對於原票表的每一行,算多行(在同一個表)怎麼也得票數< =到該行。計數與排名相同。

連接是需要的票數表中的投票表格鏈接到每個單排。當你在你的選擇列表中的COUNT()需要

GROUP BY。對於每個人來說,查詢計算它找到的行數爲< =對於每個人。帶有COUNT的GROUP BY限制了JOIN結果的數量,該結果是原始投票表的乘積。

+0

感謝您的回覆! 我無法看到JOIN如何進入這個過程。 JOIN的ON語句在我看來應該是WHERE條件。 JOIN是否將滿足這些條件的表中的每一行都帶回原始表中的每條記錄,COUNT然後統計實際返回的實際數量?如果這一切都正確,那麼GROUP BY就是我迷路的地方。它是否將連接表分組? – 2012-04-17 15:53:47

+1

是的,該連接正在滿足滿足這些條件的表中的每一行。如果要用v2.names替換COUNT,並刪除GROUP BY,則結果集將相乘來說明這一點。 – 2012-04-17 16:02:18