#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, 2, 3, 4 являются допустимыми идентификаторами.
- Подзапрос должен возвращать идентификаторы только из 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 ...