我试图运行一个MySQL查询,但不太确定如何做到这一点。我想计算匹配的连续行的数量。例如
A A A B B B B A A
我希望结果是3
很容易计算A
的总数,但我不确定是否只列出最近的3个。
这里是一个例子,如何即时通讯上市所有
SELECT email,subject FROM tablename where email='[email protected]' and subject='FAIL';
编辑:这里有一些示例数据可能会有所帮助。为了简单起见,我们将只使用ID和主题,并按ID
排序
ID Subject
1 FAIL
2 FAIL
3 FAIL
4 PASS
5 PASS
6 FAIL
7 PASS
8 FAIL
9 FAIL
根据ID
的排序方式,结果应该是3或2
3条答案
按热度按时间fjnneemd1#
我在这里加载了一个SQLfiddle:http://sqlfiddle.com/#!2/5349 a/1然而,在您的示例数据中,您有两个ID=5。我让它独一无二。另外,我的SQLFiddle数据不再与您的数据匹配,因为我更改了一些值以确保其工作。玩得开心:)(这可以查看序列的最大ID值)
试试这个:
3hvapo4f2#
这只是一个简单的技巧,如果你找到第一个非faildata id,你可以很容易地计算连续的通行证。
fivyi3re3#
您可以使用以下方式。我们所需要的只是计算值的变化,例如。当前值不等于前一个值。在该示例中,ID是用于订单字段,它可以是ID、日期、..
count(*)+1
,因为第一个序列没有先前的值。SQLFiddle演示
如果你只需要计算值大于1的序列,那么你可以使用下面的语句。这里
HAVING count(*)>1
意味着我们只需要行中有2个或更多值的序列。如果需要3个或更多,则将其更改为HAVING count(*)>2
等等。SQLFiddle演示