Указание нескольких условий поиска для одного столбца (визуальные инструменты для баз данных)
Иногда может понадобиться сочетание нескольких условий поиска для одного столбца. Например, можно сделать следующее:
- Найти несколько разных имен сотрудников в таблице employee , находящихся в разных группах по уровню зарплаты. Такой тип поиска требует использования условия OR (или).
- Найти книгу, название которой начинается со слова «The» и содержит слово «Cook». Такой тип поиска требует использования условия AND (и).
Сведения, приведенные в этом подразделе, применимы к условиям поиска как в предложении WHERE, так и в предложении HAVING запроса. В примерах в основном используется предложение WHERE, но рассматриваемые принципы применимы к обоим типам задания условий поиска.
Для поиска альтернативных значений в одном столбце данных используется условие OR. Для поиска значений, удовлетворяющих одновременно нескольким условиям, используется условие AND.
Указание условия OR
Использование условия OR позволяет указать несколько альтернативных значений для поиска в столбце. Этот параметр расширяет пространство поиска и может вернуть больше записей, чем при поиске одного значения.
Часто можно использовать оператор IN вместо того, чтобы искать несколько значений в одном столбце.
Указание условия OR
- На панели критериевдобавьте столбец для поиска.
- Укажите первое условие в столбце Фильтр только что добавленного столбца данных.
- Укажите второе условие в столбце Или. этого столбца данных.
Конструктор запросов и представлений создает предложение WHERE, содержащее условие OR, подобное следующему:
SELECT fname, lname FROM employees WHERE (salary < 30000) OR (salary >100000)
Указание условия AND
Использование оператора AND позволяет задать такие условия поиска, при которых результирующий набор удовлетворяет сразу двум (или более) критериям поиска. При использовании этого параметра пространство поиска сужается и обычно возвращается меньше записей, чем при поиске по одному значению.
Для поиска в диапазоне значений можно использовать оператор BETWEEN вместо двух условий, объединенных оператором AND.
Указание условия AND
- На панели критериев добавьте столбец для поиска.
- Укажите первое условие в столбце Фильтр только что добавленного столбца данных.
- Добавьте тот же столбец на панель критериев еще раз, поместив его в пустую строку сетки.
- В столбце Фильтр второй строки укажите второе условие.
Конструктор запросов создает предложение WHERE, которое содержит условие AND, подобное следующему:
SELECT title_id, title FROM titles WHERE (title LIKE '%Cook%') AND (title LIKE '%Recipe%')
Указание нескольких условий поиска для нескольких столбцов (визуальные инструменты для баз данных)
Можно расширить или сузить область видимости, включив несколько столбцов данных в качестве части условия поиска. Например, можно сделать следующее:
- Выполнить поиск сотрудников, которые либо проработали в компании более пяти лет, либо занимают определенные должности.
- Выполнить поиск книги, которая опубликована указанным издательством и имеет отношение к кулинарии.
Чтобы создать запрос, осуществляющий поиск значений в каком-либо из двух (или более) столбцов, необходимо указать условие OR. Чтобы создать запрос, который должен отвечать условиям в двух (или более) столбцах, необходимо указать условие AND.
Указание условия OR
Чтобы создать несколько условий, связанных оператором OR, необходимо поместить каждое отдельное условие в отдельный столбец на панели критериев.
Указание условия OR для двух различных столбцов
- В панели критериевдобавьте столбцы для поиска.
- В столбце Фильтр для первого столбца, подлежащего поиску, укажите первое условие.
- В столбце Или. для второго столбца данных, подлежащего поиску, укажите второе условие, оставив столбец Фильтр пустым. Конструктор запросов и представлений создает предложение WHERE, содержащее условие OR, подобное следующему:
SELECT job_lvl, hire_date FROM employee WHERE (job_lvl >= 200) OR (hire_date < '01/01/1998')
Указание условия AND
Чтобы выполнить поиск разных столбцов данных с использованием условий, связанных оператором AND, необходимо поместить все условия в столбец Фильтр в сетке.
Указание условия AND для двух различных столбцов
- В панели критериевдобавьте столбцы для поиска.
- В столбце Фильтр для первого столбца данных, подлежащего поиску, укажите первое условие.
- В столбце Фильтр для второго столбца данных укажите второе условие. Конструктор запросов и представлений создает предложение WHERE, которое содержит предложение AND, подобное следующему:
SELECT pub_id, title FROM titles WHERE (pub_id = '0877') AND (title LIKE '%Cook%')
Несколько условий в SQL
Мне нужно сделать запрос к БД, в котором необходимо выполнить выборку по условиям. Причем условий 5, необходимо выполнение хотя бы 4х. Как можно это сделать не прибегая к сложнейшим вариантам с AND OR. Подскажите, как )
Отслеживать
задан 2 июн 2017 в 14:52
Ivan Salosin Ivan Salosin
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Вариант с подзапросом и кейсами
SELECT * FROM ( SELECT t.*, CASE WHEN [условие1] THEN 1 ELSE 0 END op1, CASE WHEN [условие2] THEN 1 ELSE 0 END op2, CASE WHEN [условие3] THEN 1 ELSE 0 END op3, CASE WHEN [условие4] THEN 1 ELSE 0 END op4, CASE WHEN [условие5] THEN 1 ELSE 0 END op5 FROM table t ) tmp WHERE op1 + op2 + op3 + op4 + op5 >= 4
Отслеживать
ответ дан 2 июн 2017 в 14:59
368 1 1 серебряный знак 7 7 бронзовых знаков
Кстати, в MySQL любое логическое условие дает 0 или 1. так что вполне можно сходу писать (a=1)+(b=2)+. >=4
MySQL IN и NOT IN — несколько условий
В данном посте для простоты будет использоваться не локальная база данных, а взятая тут. В поле SQL Statement вы можете копировать код из данного поста и сразу смотреть результат.
WHERE IN
В предыдущем посте мы рассматривали оператор OR и там был такой пример:
SELECT * FROM Customers WHERE Country = 'France' OR Country = 'Germany'
Этот же пример мы можем сделать с помощью оператора IN :
SELECT * FROM Customers WHERE Country IN('France', 'Germany')
Результат будет тот же самый, но преимущество оператора IN будет в лаконичности записи, если вам нужно задать три и более условия.
SELECT * FROM Customers WHERE Country IN('France', 'Germany', 'UK', 'Spain')
Код выше будет короче и понятнее чем:
SELECT * FROM Customers WHERE Country = 'France' OR Country = 'Germany' OR Country = 'UK' OR Country = 'Spain'
WHERE NOT IN
Оператор NOT IN работает похожим образом, только в нем нам нужно задать те параметры, которые мы не хотим видеть в результатах.
Если, скажем, нам нужны пользователи из всех стран, кроме четырех из примера выше:
SELECT * FROM Customers WHERE Country NOT IN('France', 'Germany', 'UK', 'Spain')

Как видно из примера в результате выполнения запроса мы получили пользователей всех, кроме указаных стран
Ваши вопросы и комментарии:
Свежие записи
- MySQL IS NULL — проверка поля на NULL
- MySQL LIKE — поиск по паттерну
- Between MySQL — оператор для выборки по диапазону значений
- MySQL IN и NOT IN — несколько условий
- MySQL WHERE — синтаксис и примеры
Копирование материалов разрешено только с ссылкой на источник Web-Dev.guru
2023 © Все права защищены.
