適用於:
Access 2013 | Access 2016
指定
FROM
子句列出的資料表中的哪些記錄會受到
SELECT
、
UPDATE
或
DELETE
陳述式影響。
SELECT
fieldlist
FROM
tableexpression
WHERE
criteria
包含 WHERE 子句的 SELECT 陳述式包含下列部分:
Access 資料庫引擎會選取符合 WHERE 子句中所列條件的記錄。 如果您未指定 WHERE 子句,您的查詢會從資料表傳回所有資料列。 如果在查詢中指定一個以上的資料表,而且沒有包含 WHERE 子句或 JOIN 子句,查詢就會產生資料表的 Cartesian 產品。
WHERE 為選用,但如果包含,則會接在 FROM 的後面。 例如,您可以選取銷售部門中的所有員工 (
WHERE Dept = 'Sales'
) 或年齡介於 18 到 30 之間的所有客戶 (),或年齡介於 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]
當您指定 criteria 引數時,日期常值必須是美式格式,即使您不是使用美國版的 Microsoft Jet 資料庫引擎也一樣。 例如,1996 年 5 月 10 日的英國格式為 10/5/96,而美國格式則是 5/10/96。 一定要使用數字符號 (#) 包住日期文字,如下列範例所示。
若要在英國資料庫中尋找日期為 1996 年 5 月 10 日的記錄,必須使用下列 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}}
一定要如上述語法包含大括號和連字號。
下列範例假定 [員工] 資料表中的假設 [薪水] 欄位的存在。 請注意,這個欄位並不實際存在於 Northwind 資料庫的 Employees 資料表。
此範例選取姓氏為 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
存取開發人員論壇
在 support.office.com 上存取說明
存取 UtterAccess 上的論壇
存取開發人員和 VBA 程式設計說明中心 (FMS)
存取 StackOverflow 上的文章
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。