Потому что null это неопределенность - а неопределенность бывает разная, поэтому сравнения where field = null не работают. И есть специальные функции is null и прочие
что за такое понятия правильный sessid? есть просто sessid у каждого пользователя. к этой sessid привязанный какие то данные которые лежат на сервере - в файлах, в памяти, в бд, как угодно.
у васи sessid - 1, по этому айди находятся данные login = vaso, logged = true;
у неизвестного пользователя sessid - 2, по этому айди находятся данные logged = false;
ну первый же запрос в гугле https://techvblogs.com/blog/spa-authentication-lar...