Как написать 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 и исключением одного столбца из поиска, вы можете использовать следующий запрос: 

SELECT a, b, c FROM data WHERE data MATCH 'a:$fullQuery OR b:$fullQuery' AND NOT c:$fullQuery;


этом запросе используется оператор MATCH для поиска по столбцам a и b с использованием переменной $fullQuery . Оператор AND NOT исключает результаты, где столбец c также соответствует запросу $fullQuery .

Таким образом, если $fullQuery содержит “Что ГЛАВРЫБА может”, запрос вернет строки, где a или b содержат эту фразу, но c не содержит её. Это позволит вам исключить столбец c из поиска, но при этом включить его в выводимые результаты. Пожалуйста, убедитесь, что ваш запрос корректно обрабатывает специальные символы и пробелы в $fullQuery .
Похожие вопросы