SQLite-如何计算不包括具有特定列相同值的行的行数
有一个名为:assembly的表 栏目: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中选择
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