Twoje rozwiązanie jest moim zdaniem zbyt słabe. Lepszym jest jak ktoś wspomniał zrobienie dodatkowej tabeli dla nieprzeczytanych bo:
- można to podpisać pod wielu userów
- łatwiejsze w modyfikacji ( nie wiem jak długo programujesz ale dodawanie kolejnych kolumn bo się wpadło na pomysł dorobienia czegoś to....maraton zakończony po 50 metrach)
Poza tym robiąc left join dostaje się ładne dane tzn dodatkowa kolumna z null lub konkretnym id co jest dla nas pomocne:
<?php
if( ! is_null( $kolumna_zjoinowana ) ) { }
?>
Owszem rozwiązanie z dodatkową tabelką niesie ze sobą minus w postaci dodawania przy nowej wiadomości dodatkowego rekordu do tej tabelki, że nie jest ona przeczytana (lub wywoływanie triggera po insercie). Czym jednak ta drobnostka jest ?