Based on some limited testing, using a subquery seems to outperform a
join in this case (the join was invoking a temporary table, which is
always a bad sign).
This also adds logic to fix a bug where sticky discussions would remain
at the top even when marked as read using the "mark all as read" button.
I thought we had an open issue for this somewhere, but I can't seem to
find one. ref #988#1003