我有这样的数据库结果
ID | NAME | TYPE
--------------------
1 | baseball | 1
2 | kickball | 1
3 | football | 1
4 | soccer | 2
如何选择*以获得所有结果,但结果中的总计数= 2?
任何帮助表示感谢。
答案 0 :(得分:1)
通常我们设法通过两个不同的结果集来获得这个。但是,可以使用类似于以下
的查询将它们全部合并到一起 SELECT ID, Name, Type
FROM MyTable
UNION
SELECT -1, Type, COUNT(*)
FROM MyTable
WHERE Type = 2
GROUP BY Type
ORDER BY ID
假设所有正常ID都是> 0允许-1作为带计数的行的标记。由于ORDER BY,该行将在结果集中排在第一位。
请注意,我们可以通过简单地删除(或更改)第二个查询中的WHERE子句来使事情复杂化并获得所有类型(或多个类型)的计数。
答案 1 :(得分:1)
这将为您提供每行中当前行类型的类型计数:
select t1.*, t2.TypeCount
from Table1 t1
inner join (
select TYPE, count(*) as TypeCount
from Table1
group by TYPE
) t2 on t1.TYPE = t2.TYPE