Как написать SQL запрос для поиска по двум столбцам одновременно, исключая определенные столбцы из поиска?

Как скорректировать запрос к БД SQLite, чтобы осуществить поиск только по столбцам 'a' и 'b', при этом учитывать также столбец 'c', исключив его из поиска?
  • 25 марта 2024 г. 18:19
Ответы на вопрос 2
Для поиска по двум столбцам 'a' и 'b', исключая столбец 'c' из поиска, можно написать следующий SQL запрос:

SELECT *
FROM table_name
WHERE (a = 'значение_1' OR b = 'значение_1')
AND (a = 'значение_2' OR b = 'значение_2');

Для корректировки запроса к БД SQLite исключения столбца 'c' из поиска, можно использовать следующий запрос:

SELECT *
FROM table_name
WHERE (a = 'значение_1' OR b = 'значение_1')
AND (a = 'значение_2' OR b = 'значение_2')
AND (c = 'исключаемое_значение'); 

Этот запрос исключит строки, где значение столбца 'c' равно 'исключаемому_значению' из результатов поиска, при условии совпадения значений в столбцах 'a' и 'b'.
Для выполнения поиска по двум столбцам в SQLite с использованием FTS5 и исключением одного столбца из поиска, вы можете использовать следующий запрос: <br/> <br/> <pre><code class="sql">SELECT a, b, c FROM data WHERE data MATCH 'a:$fullQuery OR b:$fullQuery' AND NOT c:$fullQuery;</code></pre> <br/> <br/> этом запросе используется оператор <code>MATCH</code> для поиска по столбцам <code>a</code> и <code>b</code> с использованием переменной <code>$fullQuery</code> . Оператор <code>AND NOT</code> исключает результаты, где столбец c также соответствует запросу <code>$fullQuery</code> . <br/> <br/> Таким образом, если <code>$fullQuery</code> содержит “Что ГЛАВРЫБА может”, запрос вернет строки, где <code>a</code> или <code>b</code> содержат эту фразу, но <code>c</code> не содержит её. Это позволит вам исключить столбец <code>c</code> из поиска, но при этом включить его в выводимые результаты. Пожалуйста, убедитесь, что ваш запрос корректно обрабатывает специальные символы и пробелы в <code>$fullQuery</code> .
Похожие вопросы