У меня проблема с тем, как структурировать оператор так, чтобы он возвращал записи, которые соответствуют нескольким значениям в нескольких столбцах, даже если значение может не находиться в других столбцах ... да, я знаю, это звучит странно, позвольте мне объяснить .
Допустим, я ищу 2 значения («это» и «это»). Давайте также скажем, что я смотрю в 4 разных столбцах для этих значений. Вот два сценария, которые я выдвинул, но ни один из них не работает правильно, и я объясню каждое.
Использование оператора AND
SELECT * FROM table
WHERE (column1 LIKE '%this%'
AND column2 LIKE '%this%'
AND column3 LIKE '%this%'
AND column4 LIKE '%this%'
AND column1 LIKE '%that%'
AND column2 LIKE '%that%'
AND column3 LIKE '%that%'
AND column4 LIKE '%that%')
Если я использую оператор AND для своего оператора, тогда каждое значение должно быть в каждом столбце, иначе оператор не будет возвращать никаких записей. Допустим, он находит «this» в column2
и находит «that» в column1
. Несмотря на то, что он нашел эти значения в этих 2 столбцах, он по-прежнему не возвращает записей, поскольку эти значения не были найдены в column3
и column 4
Использование оператора ИЛИ
SELECT * FROM table
WHERE (column1 LIKE '%this%'
OR column2 LIKE '%this%'
OR column3 LIKE '%this%'
OR column4 LIKE '%this%'
OR column1 LIKE '%that%'
OR column2 LIKE '%that%'
OR column3 LIKE '%that%'
OR column4 LIKE '%that%')
Если я использую оператор ИЛИ , он вернет все записи, которые содержат любое из значений в любом из столбцов, даже если запись может содержать только одно из этих значений, а не оба.
То, что я пытаюсь выполнить с помощью моего утверждения, - это возвращать только записи, которые содержат оба «this» И «that» в любом из столбцов, даже если другие столбцы могут не содержать этих значений.
Надеюсь, это имеет смысл.