Access SQL: предложение WHERE — служба поддержки Майкрософт
Доступ
Запросы
Синтаксис SQL
Синтаксис SQL
Доступ к SQL: предложение WHERE
Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Дополнительно…Меньше
Это одна из статей о Access SQL. В этой статье описывается, как написать предложение WHERE, и используются примеры для иллюстрации различных методов, которые можно использовать в предложении WHERE.
В операторе SQL предложение WHERE указывает критерии, которым должны соответствовать значения полей для записей, содержащих значения, которые должны быть включены в результаты запроса.
Обзор Access SQL см. в статье Access SQL: основные понятия, словарный запас и синтаксис.
В этой статье
Ограничение результатов с помощью критериев
Синтаксис предложения WHERE
Используйте предложение WHERE для объединения источников данных
Ограничение результатов с использованием критериев
Если вы хотите использовать данные для ограничения количества записей, возвращаемых в запросе, вы можете использовать критерии. Критерий запроса похож на формулу – это строка, которая может состоять из ссылок на поля, операторов и констант. Критерии запроса — это тип выражения.
В следующей таблице показаны некоторые примеры критериев и пояснено, как они работают.
Критерии | Описание |
>25 и <50 | Этот критерий применяется к числовому полю, такому как Цена или ЕдиницыНа складе. Он включает только те записи, где поле Price или UnitsInStock содержит значение больше 25 и меньше 50. |
DateDiff(«гггг», [Дата рождения], Дата()) > 30 | Этот критерий применяется к полю даты/времени, такому как BirthDate. В результат запроса включаются только те записи, в которых количество лет между датой рождения человека и сегодняшней датой больше 30. |
равно нулю | Этот критерий можно применять к полям любого типа для отображения записей, в которых значение поля равно null. |
Как показано в предыдущей таблице, критерии могут сильно отличаться друг от друга в зависимости от типа данных поля, к которому применяются критерии, и конкретных требований. Некоторые критерии просты и используют основные операторы и константы. Другие сложные и используют функции и специальные операторы, а также включают ссылки на поля.
Важно: Если поле используется с агрегатной функцией, вы не можете указать критерии для этого поля в предложении WHERE. Вместо этого вы используете предложение HAVING для указания критериев для агрегированных полей. Дополнительные сведения см. в статьях Доступ к SQL: основные понятия, словарный запас и синтаксис и Предложение HAVING.
Синтаксис предложения WHERE
Вы используете критерии запроса в предложении WHERE оператора SELECT.
Предложение WHERE имеет следующий основной синтаксис:
ГДЕ поле = критерий
Например, предположим, что вам нужен номер телефона клиента, но вы помните только то, что его фамилия Бублик. Вместо просмотра всех телефонных номеров в базе данных вы можете использовать предложение WHERE, чтобы ограничить результаты и упростить поиск нужного номера телефона. Предполагая, что фамилии хранятся в поле с именем LastName, ваше предложение WHERE выглядит следующим образом:
ГДЕ [Фамилия] = ‘Бублик’
Примечание. Критерии в предложении WHERE не обязательно основывать на эквивалентности значений.
Используйте предложение WHERE для объединения источников данных
Иногда может потребоваться объединить источники данных на основе полей с совпадающими данными, но с разными типами данных. Например, поле в одной таблице может иметь тип данных «Число», и вы хотите сравнить это поле с полем в другой таблице с типом данных «Текст».
Вы не можете создать соединение между полями с разными типами данных. Чтобы объединить данные из двух источников данных на основе значений в полях с разными типами данных, вы создаете предложение WHERE, которое использует одно поле в качестве критерия для другого поля, используя ключевое слово LIKE.
Например, предположим, что вы хотите использовать данные из таблицы1 и таблицы2, но только тогда, когда данные в поле1 (текстовое поле в таблице1) совпадают с данными в поле2 (числовое поле в таблице2).
Ваше предложение WHERE будет выглядеть следующим образом:ГДЕ поле1 НРАВИТСЯ поле2
Дополнительные сведения о том, как создать критерии для использования в предложении WHERE, см. в статье Примеры критериев запроса.
Верх страницы
Может ли запрос SQL содержать предложение WHERE и HAVING
Да, запрос SQL может содержать предложения WHERE и HAVING. Вы будете использовать их вместе, когда захотите извлечь (или отфильтровать) строки для группы данных с помощью предложения WHERE и применить условие к агрегату с помощью предложения HAVING.Вот пример. У меня есть таблица с именем dbo.books, в ней 5 столбцов и несколько строк данных. Вот таблица dbo.books. Я буду держать это просто.
Изображение
Сначала
1)
ВЫБЕРИТЕ категорию, SUM(Price) Total_Price FROM dbo.Books ГДЕ Цена > 150 СГРУППИРОВАТЬ ПО КАЧЕСТВУ
В приведенном выше запросе (используя WHERE) я получу общую цену для каждой категории, где индивидуальная цена больше (>) 150. Поскольку я использую SUM() , мне придется сгруппировать ее с помощью GROUP BY.
2)
ВЫБЕРИТЕ категорию, SUM(Price) Total_Price ИЗ dbo.Books СГРУППИРОВАТЬ ПО КАТЕГОРИЯМ HAVING SUM(Price) > 150
Во втором запросе я использую предложение HAVING. Это агрегатная функция ( SUM() ). В отличие от предложения WHERE, этот запрос сначала возвращает строки, группируя их, а затем фильтрует их по общей сумме с помощью предложения HAVING.
Теперь , я хочу сделать что-то подобное (используя оба вышеуказанных запроса) в одном запросе. См. сначала этот запрос .
ВЫБЕРИТЕ категорию, SUM(Price) Total_Price ИЗ dbo. Books ГДЕ Категория В («Компьютеры», «Наука», «Программирование») GROUP BY Category
Вывод (изображение)
Возвращает сумму цен для отдельных категорий. Я фильтрую категории, используя предложение WHERE. Я не хочу все категории.
Предположим теперь , я хочу отфильтровать его дальше, чтобы получить строки, в которых сумма цен больше (>) 150. Не все строки.
К сожалению, я не могу сделать это в SQL-запросе! 👇
ВЫБЕРИТЕ категорию, SUM(Price) Total_Price ИЗ dbo.Books ГДЕ Категория В («Компьютеры», «Наука», «Программирование») И СУММА(Цена) > 150 -- ЭТО НЕПРАВИЛЬНО. ЭТО ВЫДАЕТ ОШИБКУ. СГРУППИРОВАТЬ ПО Категории
Поэтому мне придется использовать Предложение HAVING вместе с предложением WHERE в приведенном выше запросе.
Использование WHERE и HAVING в одном запросе SQL
ВЫБЕРИТЕ категорию, SUM(Price) Total_Price ИЗ dbo. Books ГДЕ Категория В («Компьютеры», «Наука», «Программирование») СГРУППИРОВАТЬ ПО КАТЕГОРИЯМ HAVING SUM(Price) > 150
Результат (изображение)
Вот как вы используете WHERE и HAVING в одном запросе. ☺
——————-
Вот список 5 самых популярных сообщений SQL Server.
1) Как найти и удалить повторяющиеся строки в таблице с помощью SQL Server ROW_NUMBER() и CTE: дублирующиеся строки в таблицах могут сильно раздражать администраторов баз данных и программистов, поскольку вызывают много неудобных вопросов о подлинности данных в базе данных. . Ситуация усугубляется, когда аудиторы компании жалуются на нарушения в балансе и т. д.
2) Как преобразовать строки в столбцы с помощью SQL Server PIVOT ИЛИ как использовать PIVOT в SQL Server: вы когда-нибудь задумывались, как можно преобразовать данные из строк в столбцы? в SQL-сервере. Мы говорим о SQL-запросе, который преобразует записи из нескольких строк в столбцы.