Как добавить значения в POSTGRES В предложении вместе с подзапросом

#postgresql

#postgresql

Вопрос:

У меня простой запрос, и мне требуется простое решение в PostgreSQL. Запрос

 SELECT distinct(id)
FROM users
WHERE id IN (1, 2, 3) 
OR id IN (SELECT user_id FROM users_names WHERE user_id IN (1, 2, 3) AND is_valid = true)
 

Примечание:

  1. например, 1, 2, 3, 4 являются допустимыми идентификаторами.
  2. Подзапрос должен возвращать идентификаторы только из 1, 2, 3

Допустим, значение 3 допустимо, поэтому оно должно возвращать 1, 2, 3, а не 4

Но, похоже, это не работает, я пропустил некоторые основы, но могу ли я получить ответ.

Комментарии:

1. Является id уникальным?

Ответ №1:

 SELECT id
FROM users
WHERE id IN (1, 2, 3)
   OR id IN (SELECT id FROM users WHERE is_valid = true)
 

Еще лучше:

 SELECT id
FROM users
WHERE id IN (1, 2, 3)
   OR is_valid = true
 

Комментарии:

1. Да, спасибо, мне нужен подзапрос для некоторого условия, но почему «ИЛИ» вместо «И»

2. Почему OR ? Потому id IN (val1, val2, ...) что означает id = val1 OR id = val2 OR ...