Where in sql: SQL — WHERE Clause | Tutorialspoint

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 не обязательно основывать на эквивалентности значений.

Вы можете использовать другие операторы сравнения, такие как больше (>) или меньше (<). Например, ГДЕ [Цена]>100 .

Используйте предложение 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. Я буду держать это просто.

Изображение

Сначала

, давайте посмотрим, как я могу использовать предложения WHERE и HAVING в двух отдельных запросах .

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-запросе, который преобразует записи из нескольких строк в столбцы.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *