我知道其他職位談論這一點,但我還沒有能夠適用於這種情況。MySQL:計數,然後按總數排序
這是我到目前爲止。
SELECT *
FROM ccParts, ccChild, ccFamily
WHERE parGC = '26' AND
parChild = chiId AND
chiFamily = famId
ORDER BY famName, chiName
我需要做的是查看結果中具有相同ccFamily的ccParts的總數。然後,按總數排序。
我知道其他職位談論這一點,但我還沒有能夠適用於這種情況。MySQL:計數,然後按總數排序
這是我到目前爲止。
SELECT *
FROM ccParts, ccChild, ccFamily
WHERE parGC = '26' AND
parChild = chiId AND
chiFamily = famId
ORDER BY famName, chiName
我需要做的是查看結果中具有相同ccFamily的ccParts的總數。然後,按總數排序。
它看起來這是接近你想要什麼:
SELECT f.famId, f.famName, pc.parCount
FROM (
SELECT c.chiFamily AS famId, count(*) AS parCount
FROM
ccParts p
JOIN ccChild c ON p.parChild = c.chiId
WHERE p.parGC ='26'
GROUP BY c.chiFamily
) pc
JOIN ccFamily f ON f.famId = pc.famId
ORDER BY pc.parCount
內聯視圖(括號之間)是頂篷:它您的分組和計數。請注意,您並不需要按表ccFamily
來按家庭分組,因爲表ccChild
已攜帶家庭信息。如果您不需要姓氏(即ID是否足夠),那麼您可以單獨使用內聯視圖,並在那裏使用ORDER BY count(*)
。外部查詢只將姓名與結果關聯起來。
此外,MySQL提供了一個非標準機制,通過該機制您可以將外部查詢與內聯視圖相結合,但在這種情況下,它對清晰度和簡潔性沒有多大幫助。我提供的查詢應該被任何SQL實現接受,並且首先學習這種語法和方法對您有利。
在SELECT
中,添加如count(ccParts) as count
,然後ORDER BY count
而不是?不知道你的桌子的結構,所以你可能需要即興創作。
好的,我認爲我需要使用一個組,以便使用相同的ccFamily計算ccParts。? – Josiah
您將需要顯示一些示例數據。是的,我認爲「GROUP BY」是必要的。 –
你可能想看看這個:http://stackoverflow.com/questions/2283305/mysql-order-by-count –
你能分享一些樣本數據和你想要的結果嗎? – Mureinik
首先,你不應該在三個不同的表上使用SELECT *,而只選擇你需要的字段。那麼,你能告訴我們表格的結構嗎? –