关于数据库查询,我确实有不同的问题。有一些不同的方案:

我有一个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/

10-15 13:46