SQLite-如何计算不包括具有特定列相同值的行的行数

SQLite-如何计算不包括具有特定列相同值的行的行数,sql,sqlite,group-by,count,where-clause,Sql,Sqlite,Group By,Count,Where Clause,有一个名为:assembly的表 栏目: id: number partId: number index: number 对于部件,我有一个索引为1,2,3的零件 但是我可以替换索引2中的部分,因此我有两个具有相同索引的部分: id partId index 1 234 1 1 456 2 1 789 2 1 765 3 我的总成是零件234、456或789、765 我需要知道我的组件中有多少零件3个零件 我试过: 从assembly中选择

有一个名为:assembly的表

栏目:

id: number
partId: number
index: number
对于部件,我有一个索引为1,2,3的零件

但是我可以替换索引2中的部分,因此我有两个具有相同索引的部分:

id partId   index
1  234      1
1  456      2
1  789      2
1  765      3
我的总成是零件234、456或789、765

我需要知道我的组件中有多少零件3个零件

我试过:

从assembly中选择countassembly.index,其中assembly.id按assembly\u id在1组中

我得到:4

好的,这很正常

我认为通过对索引进行分组,我将得到真正的计数:

我试过:

按assembly.id和assembly.index从assembly中选择countassembly.index,其中assembly.id位于1组中

我得到2行,计数为2

我被期望得到一个数到3的一行

另外,如果我更改where语句以获得许多类似于

where assembly.id in (1,2,3)
我得到了一个错误计数的集合中的一行

有人知道我怎样才能得到确切的数字吗

谢谢这是你想要的吗

select count(distinct a.index) no_indexes
from assembly a
where a.id = 1
这将为您提供一行,计数为3

如果每个id需要一条记录,则:


旁注:索引在所有sql方言中都是保留字,因此不是一个很好的列名选择。

我不明白。如果一个组件有三个索引,这不意味着需要三个产品吗?为什么您的示例中只给出了两个?您的索引是正确的,非常感谢,它现在可以工作了!
select a.id, count(distinct a.index) no_indexes
from assembly a
group by id