(1, 2, 3). Можно ли что-то написать в WHERE так, чтобы из элементов (3, 4, 5, 6), наличие которых я проверяю в БД, получить только 4, 5, 6?
Пока что я это реализовал так: чекаю есть ли такие-то элементы (ids) в БД, потом через множества смотрю различие между имеющимися в БД айдишками из ids, и ids)
Нет, не оно. Есть база (1, 2, 3) Есть (3, 4, 5, 6) Мне нужно получить (4, 5, 6) А not in возратит 2, 3 То есть нужно получить не те элементы, которые есть в базе, а которые там отсутствуют)
Просто поменяйте, кого селектите и кого фильтруете.
SELECT column_name(s) FROM table_name WHERE column_name NOT IN (SELECT id FROM users); Как-то так? Просто я не могу понять, как, допустим, лист, сюда вставить)
А конкретнее как схема выглядит?
Смотря в какой БД.
a = set(itertools.chain.from_iterable(self.cur.execute('SELECT DISTINCT id FROM users WHERE id in %s' % (tuple(ids), )).fetchall())) b = get_ids.difference(a)
Надо сформировать таблицу с искомыми 3,4,5,6. И в зависимости от субд если поддерживает операцию except, если не поддерживает left join table on... where table.id is null
Обсуждают сегодня