Как уменьшить это многократное и-или-условия в SQL-заявлении?
У меня есть вопрос об оптимизации SQL.
Есть ли способ уменьшить этот синтаксис SQL:
Select * from TABLE
where
COLUMN != 'abc' and
COLUMN != 'def' and
COLUMN != 'xau' and
COLUMN != 'def' and
COLUMN != 'eag' and
COLUMN != 'dff' and
COLUMN != 'www'
и второй синтаксис sql
Select * from TABLE
where
COLUMN = 'abc' or
COLUMN = 'def' or
COLUMN = 'xau' or
COLUMN = 'def' or
COLUMN = 'eag' or
COLUMN = 'dff' or
COLUMN = 'www'
2 ответа
Решение
Попробуй это:
Условие множественного ИЛИ может быть переписано с использованием:
Select * from TABLE
where
COLUMN not in('abc','def','xau','def','eag','dff','www')
Несколько И условие, можете ли вы просветить меня, когда это возможно, что один и тот же столбец имеет более 1 значение?
ИСПОЛЬЗОВАНИЕ Boolean ALGEBRA:
первая: (!x)AND(!y)..AND(!z) == !(x or y...or z)
Имея в виду:
Select * from TABLE WHERE COLUMN NOT IN ('abc','def',...)
2nd: (!x)or(!y)..or(!z)==!(x AND Y AND ..Z)
however the intersection of x AND Y ... AND Z is the empty set.
So (!x)or(!y)..or(!z)==!(x AND Y AND ..Z) = !(False) = True.
Meaning:
Select * from TABLE //no WHERE CLAUSE NEEDED