Это проблема, с которой я столкнулся в работе, и я упрощаю ее следующим образом:
Во-первых, это тестовый набор
create table A_TESTB
(
A VARCHAR2(10),
B VARCHAR2(10)
);
insert into A_TESTB (A, B)
values ('1', '2');
insert into A_TESTB (A, B)
values ('1', '3');
insert into A_TESTB (A, B)
values ('1', '4');
commit;
SQL> select * from a_testb;
A B
---------- ----------
1 2
1 3
1 4
тогда я использую sql как показано ниже
SQL> SELECT *
2 FROM (SELECT '10' TESTTYPE, T.* FROM A_TESTB T) W
3 WHERE (W.A = '1' OR 1 = 2)
4 AND W.TESTTYPE = '999999';
TESTTYPE A B
-------- ---------- ----------
10 1 2
10 1 3
10 1 4
Вопрос в том, что я использовал условие AND W.TESTTYPE = '999999'
для фильтрации ,, и мой ожидаемый набор результатов должен быть пустым, но кажется, что условие не работает, секрет может быть из OR
, но почему нет это работает?