关于数据库查询,我确实有不同的问题。有一些不同的方案:
我有一个3列创建的表。它们具有ID,ItemId,TypeId列。我需要一个计数查询,它应该一起计数ItemId和TypeId,但重复的列除外。例如;
Id ItemId TypeId
-- ------ ------
1 1 1 -> count +1
2 1 1 -> ignore
3 1 2 -> count -1
4 1 2 -> ignore
5 1 1 -> count +1
结果计数= 1
最后,如果重复重复不同的行,则忽略该行。但是TypeId数据更改了一个特定项,它应该增加或减少计数。 TypeId等于1个计数+ = 1,等于2个计数-= 1。
最佳答案
在MySQL中,您似乎会使用count(distinct)
:
select count(distinct itemId, typeId)
from t;
但是,您确实有一个“孤岛”问题。您正在查看订单,以查看发生什么变化。
如果我相信
id
没有任何空白,则可以执行以下操作:select count(*)
from t left join
t tprev
on t.id = tprev.id + 1
where not ((t.itemId, t.typeid) <=> (tprev.itemId, t.prev.id))
关于mysql - MYSQL计算不同数据取决于条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52816025/