, . .
SELECT... FROM
SELECT...FROM Logs y, (...) vars?
: create table test(field1 int), 3 :
field1
1
2
3
select * from test, (select @counter:=1, @prev:=NULL) vars
field1 @counter:=1 @prev=NULL
------- ------------ -----------
1 1 NULL
2 1 NULL
3 1 NULL
@counter @prev . 1 NULL. , , .
.
SELECT
Num,
@counter := IF(@prev = Num, @counter + 1, 1) AS how_many_cnt_in_a_row,
@prev := Num
FROM Logs y, (SELECT @counter:=1, @prev:=NULL) vars
ID = 1, Num = 1 Num .
. , @prev = Num. , @prev - NULL, . , @prev = Num . IF IF(condition, what-to-do-if-condition-is-true, what-to-do-if-condition-is-false).
IF(@prev = Num, @counter + 1, 1)
----------- ------------ --
condition do this do this if condition
if true is false
@prev NULL Num, 1.
@prev Num. . , SELECT .
Num @prev was @counter was @counter calculation @prev reset to Num
--- --------- ------------ ----------------------- ------------------
1 NULL 1 is @prev = 1? No. So 1 1
1 1 1 is @prev = 1? Yes! So 2 1
1 1 2 is @prev = 1? Yes! So 3 1
2 1 3 is @prev = 2? No. So 1 2
1 2 1 is @prev = 1? No. So 1 1
2 1 1 is @prev = 2? No. So 1 2
2 2 1 is @prev = 2? Yes! So 2 2
2- 3- .
, , SELECT DISTINCT... : , @counter 3 .
Num @counter @prev
---- -------- -----
1 3 1
1 , , 1. DISTINCT (Num) 1. . WHERE WHERE ... = 3 insted >= 3.
, .