find the beginning and ending values of sequential runs
To keep all the state information with the current row to avoid having conditions you can so something like: 

SELECT start, max(end) FROM (
    SELECT 
        CASE WHEN blog_id = @prev + 1 THEN @start:=@start ELSE @start:=blog_id END AS start, 
        blog_id AS end,  
        @prev:=blog_id 
    FROM (SELECT @prev:=NULL, @start:=NULL) AS vars
    JOIN wp_blogs
) a 
GROUP BY start;

+---------+------------+
|   start |   max(end) |
|---------+------------|
|       1 |          2 |
|       4 |          4 |
|       6 |          8 |
|      10 |         10 |
+---------+------------+
4 rows in set
Time: 0.003s