Предложение WHERE (Microsoft Access SQL)

Область применения: Access 2013 | Access 2016

Определяет, на какие записи из таблиц, указанных в предложении FROM, воздействуют операторы SELECT, UPDATE или DELETE.

Синтаксис

SELECT fieldlist FROM tableexpression WHERE criteria

Выражение SELECT, содержащее предложение WHERE, состоит из этих частей:

Часть Описание
fieldlist Имя поля или полей, извлекаемых вместе с любыми псевдонимами имен полей, предикатами выбора (ALL, DISTINCT, DISTINCTROW или TOP), или другими параметрами оператора SELECT.
tableexpression Имя таблицы или таблиц, из которых извлекаются данные.
criteria Выражение, которому должны соответствовать записи для включения в результаты запроса.

Примечания

Ядро СУБД Access выбирает записи, соответствующие условиям, указанным в предложении WHERE. Если не указать предложение WHERE, запрос возвращает все строки из таблицы. Если указать несколько таблиц в запросе и не добавить предложение WHERE или предложение JOIN, запрос создает декартово произведение таблиц.

WHERE является необязательным, но при включении следует за FROM. Например, можно выбрать всех сотрудников отдела продаж (WHERE Dept = 'Sales') или всех клиентов в возрасте от 18 до 30 (WHERE Age Between 18 And 30).

Если вы не используете предложение JOIN для выполнения операций присоединения SQL к нескольким таблицам, результирующий объект Recordset не будет обновляться.

Предложение WHERE похоже на HAVING. WHERE определяет, какие записи выбираются. Аналогичным образом, после группировки записей с помощью GROUP BY, HAVING определяет, какие записи будут отображаться.

Используйте предложение WHERE для удаления записей, которые не нужно группировать по предложению GROUP BY.

Чтобы определить, какие записи возвращает инструкция SQL, используйте различные выражения. Например, указанная ниже инструкция SQL выбирает всех сотрудников с окладом более 21 000 долл. США:

SELECT LastName, Salary 
FROM Employees 
WHERE Salary > 21000;

Предложение WHERE может содержать до 40 выражений, связанных с помощью логических операторов, таких как And и Or.

При вводе имени поля, содержащего пробел или знак препинания, заключите имя в квадратные скобки ([]). Например, таблица сведений о клиенте может содержать сведения об определенных клиентах:

SELECT [Customer's Favorite Restaurant]

При указании аргумента условия литералы даты должны быть в формате США, даже если вы не используете версию ядра СУБД Microsoft Jet для США. Например, 10 мая 1996 г. записывается в формате Соединенного Королевства как 10/5/96, а в формате США как 5/10/96. Убедитесь, что литералы даты ограничены знаками решетки (#), как показано в примерах ниже.

Чтобы найти записи с датой 10 мая 1996 г. в базе данных для Соединенного Королевства, необходимо использовать указанную ниже инструкцию SQL:

SELECT * 
FROM Orders 
WHERE ShippedDate = #5/10/96#;

Также можно использовать функцию DateValue, распознающую международные настройки, установленные Microsoft Windows®. Например, используйте этот код для США:

SELECT * 
FROM Orders 
WHERE ShippedDate = DateValue('5/10/96');

А этот код используйте для Соединенного Королевства:

SELECT * 
FROM Orders 
WHERE ShippedDate = DateValue('10/5/96');

Примечание.

Если столбец, указанный в строке условий, является типом GUID, в выражении условия используется немного другой синтаксис:

WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}

Не забудьте добавить вложенные фигурные скобки и дефисы, как показано.

Пример

В приведенном ниже примере предполагается, что существует гипотетическое поле Salary (Оклад) в таблице Employees (Сотрудники). Обратите внимание, что это поле на самом деле не существует в таблице Employees (Сотрудники) базы данных Northwind.

В этом примере выбираются поля LastName и FirstName каждой записи, в которой фамилией является King. В этом примере выполняется вызов процедуры EnumFields, которую можно найти в примере для оператора SELECT.

Sub WhereX() 
 
    Dim dbs As Database, rst As Recordset 
 
    ' Modify this line to include the path to Northwind 
    ' on your computer. 
    Set dbs = OpenDatabase("Northwind.mdb") 
 
    ' Select records from the Employees table where the 
    ' last name is King. 
    Set rst = dbs.OpenRecordset("SELECT LastName, " _ 
        & "FirstName FROM Employees " _ 
        & "WHERE LastName = 'King';") 
     
    ' Populate the Recordset. 
    rst.MoveLast 
     
    ' Call EnumFields to print the contents of the 
    ' Recordset. 
    EnumFields rst, 12 
 
    dbs.Close 
 
End Sub 

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.