我知道其他职位谈论这一点,但我还没有能够适用于这种情况。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 *,而只选择你需要的字段。那么,你能告诉我们表格的结构吗? –