有一个名为:assembly
列:
id: number
partId: number
index: number
对于装配体,我的零件索引为:1,2,3。
但是我可以替换索引2的部分,所以我有2个具有相同索引的部分:
id partId index
1 234 1
1 456 2
1 789 2
1 765 3
我的装配是零件234、456或789、765。
我需要知道我的装配中有多少个零件(3个零件)
我尝试过:
select count(assembly.index) from assembly where assembly.id in (1) group by assembly_id
我得到:4
好吧,正常。
我认为通过对索引进行分组,我将获得真实计数:
我尝试过:
select count(assembly.index) from assembly where assembly.id in (1) group by assembly.id and assembly.index
我得到2行,计数为2
我希望我得到1行,计数为3。
此外,如果我更改where语句以获取许多像这样的汇编的计数
where assembly.id in (1,2,3)
每个程序集我得到一行错误的计数。
有人知道我如何获得准确的计数吗?
谢谢
答案 0 :(得分:1)
这是您想要的吗?
select count(distinct a.index) no_indexes
from assembly a
where a.id = 1
这将为您提供一行,计数为3。
如果您希望每个id
记录一条,则:
select a.id, count(distinct a.index) no_indexes
from assembly a
group by id
旁注:index
是所有sql方言中的保留字,因此不是列名的理想选择。