我已经阅读了多个答案,但是仍然无法做到。
所以我有这样的表:
表格1
| ID | COL1 | COL2 |
| 1 | 10 | Item_1 |
| 2 | 10 | Item_2 |
| 3 | 10 | Item_3 |
| 4 | 11 | Item_2 |
| 4 | 11 | Item_4 |
| 5 | 12 | Item_1 |
| 6 | 12 | Item_3 |
首先,我需要运行此命令,SELECT COL1 FROM TABLE1 WHERE COL2 = ITEM2 GROUP BY COL1
该命令返回我10
并11
现在,在那之后,我需要运行它:SELECT COUNT(ID) AS 'COUNT', COL2 from TABLE1 group by COL2 order by 'COUNT' DESC LIMIT 5
在这里,我需要添加WHERE
一条语句,以便它不会在整个表上运行,而只能在哪里运行COL1 = any result from first selection
因此,第二条命令将返回如下内容:
2 Item_2
1 Item_1
1 Item_3
1 Item_4
那么如何从一个查询中实现呢?
您可以过滤where
:
SELECT COUNT(T1.ID) AS cnt, COL2
FROM TABLE1 T1
WHERE T1.COL1 IN (SELECT TT1.COL1
FROM TABLE1 TT1
WHERE TT1.COL2 = 'ITEM2'
)
GROUP BY T1.COL2
ORDER BY cnt DESC
LIMIT 5;
请注意,它IN
会删除重复项,因此不需要GROUP BY
(或SELECT DISTINCT
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句