Okay, I got the query. For what it's worth:
SELECT COUNT( * ) AS cnt, i1.incwkyr
SELECT YEARWEEK( DATE_ADD( STR_TO_DATE( CONCAT( yr, wk, ' Sunday' ) , '%X%V %W' ) , INTERVAL 1 WEEK ) , 6 ) AS incwkyr
UNION DISTINCT (
SELECT YEARWEEK( NOW( ) )
LEFT JOIN YearWeekTable i2
ON i1.incwkyr = CONCAT( i2.yr, i2.wk )
WHERE incwkyr >= YEARWEEK( NOW( ) )
GROUP BY incwkyr
ORDER BY incwkyr ASC
WHERE t1.cnt <2
This query returns "201102" for the example data set above.
I got some of my inspiration from here. Basically, using a subquery, I first make table "i1". This table contains all current values of our table increased by 1 week. I added the "union" clause to ensure that the current week is part of the result. Then, I left join this table back to the original table to see how many fields exist with the "increased" week and year. It is essential that it is a left join, because if it weren't, weeks with no rows would not exist in the result set. (With the left join, we get "null" values.) Then, I test to find the next week in the future that has fewer than 2 rows.
To make my query look for weeks with 3 or more rows, I would put the new number in the line "WHERE t1.cnt < #". On the other hand, if I wanted the next week for which no weeks existed, I would modify the query to test for NULL values after the left join.
I hope this post helps someone in the future!