@Muramidaza

Как выбрать записи, для которых записи в связанной таблице не равны значению?

Есть таблица messages с полями:

CREATE TABLE messages
(
    id INT,
    name VARCHAR(255) NOT NULL,
    text VARCHAR(255),
    created_at Date
);


и связанная таблица:

CREATE TABLE comments
(
    id INT,
    message_id INT NOT NULL
    text VARCHAR(255),
    author_id INT NOT NULL
    created_at Date
);


Таблицы связаны один-ко-многим ON comments.message_id = messages.id

Нужно вытащить все записи из таблицы messages, которые не комментировал автор с определенным id (например 100) то есть comments. author_id != 100

если сделать так:

SELECT DISTINCT * FROM messages LEFT JOIN comments ON comments.message_id = messages.id WHERE  comments. author_id != 100


вытащит записи messages у которых в связанной таблице author_id = 100 так как есть другие записи у которых author_id != 100
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Буквально так и пишется дай messages для который нет вот таких
select ... from messages where not exists (select from comments where comments.message_id = messages.id and comments.author_id = 100);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы