Я использую Oracle 12c. Мне интересно, можно ли выбрать все записи, в которых соответствовало n-1 из n критериев?
Пример:
CREATE TABLE users
(id number,
firstname varchar2(100),
lastname varchar2(100),
city varchar2(100));
insert into users(id, firstname, lastname, city)
values (1, 'John', 'Smith', 'London');
insert into users(id, firstname, lastname, city)
values (2, 'Tom', 'Smith', 'London');
insert into users(id, firstname, lastname, city)
values (3, 'John', 'Davis', 'London');
insert into users(id, firstname, lastname, city)
values (4, 'John', 'Smith', 'Bristol');
insert into users(id, firstname, lastname, city)
values (5, 'Tom', 'Davis', 'London');
insert into users(id, firstname, lastname, city)
values (6, 'Tom', 'Davis', 'Bristol');
select * from users
where firstname = 'John'
and lastname = 'Smith'
and city= 'London'
Этот выбор возвращает только одну запись, соответствующую всем трем критериям (id = 1). Мне нужен запрос, который возвращает все записи, которые соответствуют по крайней мере двум из трех критериев (id = 1, 2, 3, 4).
Возможно ли это в Oracle, если мы знаем, что таблица пользователей имеет 5 миллионов записей?