Your trial period has ended!
For full access to functionality, please pay for a premium subscription
Message
SQ
Data Science. SQL hub
32 846 subscribers
25
17
2.4 k
🖥 Задача: “Невидимая строка”

Дана таблица users:

CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT,
deleted_at TIMESTAMP
);


Вы выполняете:

SELECT COUNT(*) FROM users WHERE deleted_at = NULL;


✔️ И получаете... 0. Хотя вы уверены, что есть пользователи, у которых deleted_at не задано.

Вопрос:
Что не так с запросом? Как правильно получить количество “неудалённых” пользователей?

Вопрос: В чем ошибка? И как надо правильно писать такой фильтр?

✔️ Правильный запрос будет выглядеть так:

Чтобы проверить, является ли значение NULL, нужно использовать специальный оператор IS NULL.

SELECT COUNT(*) FROM users WHERE deleted_at IS NULL;

Этот запрос корректно найдёт все строки, где в столбце deleted_at действительно отсутствует значение (т.е. он равен NULL), и посчитает их количество.

Итог:
Не используйте = или != для сравнения с NULL.
Используйте IS NULL для проверки на NULL.
Используйте IS NOT NULL для проверки на не NULL (если бы вам понадобилось посчитать удалённых пользователей, у которых deleted_at заполнено).

@sqlhub
04/20/2025, 19:45
t.me/sqlhub/1850
Similar message chronology:
Newest first
Similar messages not found