編輯 SQL 語句以強化查詢結果
Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

如果您的查詢不夠困難,新增一些基本的 SQL 語句有助於將結果集中。 讓我們來看看幾種類型的 SQL 語句,以及您可能會編輯的子句或部分,以取得您想要的結果。

附註:  本文內容不適用於 Access Web App (此為使用 Access 設計並於線上發佈的資料庫類型)。

本文內容

建立 Select 語句

SQL 選取語句有兩到三個子句。 SELECT 子句會告訴資料庫要在哪裡尋找數據,並要求它傳回特定的結果。

附註:  SELECT 語句一律以分號 ( 結尾;) 在最後一個子句的結尾,或是本身在 SQL 語句結尾的行上。

下列選取語句會要求 Access 從 [連絡人] 資料表的 [電子郵件位址] 和 [公司] 資料行取得資訊,明確地在 [城市] 數據行中找到 「西雅圖」。

顯示 SELECT 陳述式的 SQL 物件索引標籤

上述查詢有三個子句 SELECT、FROM 和 WHERE。

1. SELECT 子句會列出包含您要使用之數據的欄,並具有運算符 (SELECT) ,後面接著兩個標識符, (電子郵件位址和公司) 。 如果標識碼具有空格或特殊字元 (例如「電子郵件位址」) ,請在方括號內括住標識符。

2. FROM 子句會識別源數據表。 在此範例中,它具有 (FROM) 的運算符,後面接著 [連絡人]) (標識符。

3. WHERE 子句是選擇性子句。 範例中有一個運算符 (WHERE) ,後面接著表達式 (City=“Seattle”) 。

如需選取查詢的詳細資訊,請參閱 建立簡單的選取查詢。

以下是常見 SQL 子句的清單:

SQL 子句

功能

必要嗎

SELECT

列出含有需要資料的欄位。

FROM

列出含有 SELECT 子句所列之欄位的資料表。

WHERE

指定結果中所包含的每一筆記錄必須符合的欄位準則。

ORDER BY

指定如何排序結果。

GROUP BY

在含有總合函數的 SQL 陳述式中,列出 SELECT 子句中未彙總的欄位。

只在當有這樣的欄位時

HAVING

在含有總合函數的 SQL 陳述式中,指定套用到 SELECT 陳述式中所彙總之欄位的條件。

每個 SQL 子句都是由字詞組成。 以下是一些常見 SQL 詞彙的清單。

SQL 詞彙

定義

範例

識別項

用來識別資料庫物件的名稱,例如數據行名稱。

[電子郵件位址] 和公司

運算子

代表某個動作或修飾某個動作的關鍵字。

AS

常數

一個不會變更的值,例如數字或 NULL。

42

運算式

識別項、運算子、常數和函數的組合,會求出單一值。

>= 產品.[單價]

頁面頂端​​

自定義 SELECT 子句

自訂

範例

僅查看相異值。

在 SELECT 子句中使用 DISTINCT 關鍵詞。

例如,如果您的客戶來自數個不同的分公司,有些分公司的電話號碼相同,而您只想要看到電話號碼列出一次,您的 SELECT 子句會像這樣:

SELECT DISTINCT [txtCustomerPhone] 

若要變更標識碼在數據工作表檢視中的顯示方式,以改善可讀性。

使用 AS 運算子 (代表動作的關鍵詞,或在 SELECT 子句中使用欄位別名修改動作) 。 欄位別名是您指派給字段的名稱,讓結果更容易閱讀。

SELECT [txtCustPhone] AS [Customer Phone]

自定義FROM子句

自訂

範例

您可以在選取語句中使用資料表別名或指派給數據表的不同名稱。 如果數據表名稱很長,數據表別名就很實用,尤其是當您有多個字段具有來自不同數據表的相同名稱時。

若要從兩個字段中選取數據,兩者皆為具名標識碼,其中一個來自數據表 tblCustomer,另一個來自數據表 tblOrder:

SELECT [tblCustomer].[ID],        [tblOrder].[ID]

使用 AS 運算子在 FROM 子句中定義資料表別名:

FROM [tblCustomer] AS [C],      [tblOrder] AS [O] 

接著,您可以在 SELECT 子句中使用這些資料表別名,如下所示:

SELECT [C].[ID],        [O].[ID]

使用聯結將兩個數據源的成對記錄合併成單一結果,或指定如果關聯數據表中沒有對應的記錄,是否要包含這兩個數據表中的記錄。

聯結數據表,讓查詢合併數據表中的專案,並在其他數據表中沒有對應記錄時排除專案

FROM 子句看起來可能像這樣:

FROM [tblCustomer] INNER JOIN [tblOrder]ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID] 

關於使用聯結

連接有兩種類型,即內部和外部聯接。 內部聯結在查詢中較為常見。 當您執行具有內部聯結的查詢時,結果只會顯示兩個聯結數據表中存在共同值的專案。

外部聯接會指定是否要包含沒有共同值存在的數據。 外部連接是方向性的,也就是說,您可以指定是否要包含來自聯結中指定之第一個數據表的所有記錄 (稱為左方聯結) ,或是要包含聯結中第二個數據表的所有記錄, (稱為右方聯結) 。 外部聯接具有下列 SQL 語法:

FROM table1 [ LEFT | RIGHT ] JOIN table2ON table1.field1 = table2.field2

請參閱在 [聯結數據 表和查詢] 中的查詢中使用聯結的詳細資訊。

頁面頂端

自定義 WHERE 子句

WHERE 子句包含可協助限制查詢中傳回之項目的數目的準則。 查看查詢條件及其運作方式 的範例

自定義基本 WHERE 子句的範例是限制查詢的結果;假設您要找出客戶的電話號碼,但只能將姓氏記住為Bagel。 在此範例中,姓氏會儲存在 [姓氏] 字段中,因此 SQL 語法會是:

WHERE [LastName]='Bagel'

同時使用 WHERE 子句來合併具有相符數據,但數據類型不同的欄的數據源。 這會派上用場,因為您無法在具有不同數據類型的字段之間建立聯結。 使用一個字段做為另一個字段的準則,搭配 LIKE 關鍵詞。 例如,如果您想要使用 [資產] 數據表和 [員工] 數據表中的數據,則只有在 [資產] 數據表資產類型欄位中的資產類型在 [員工] 數據表的 [數量] 欄位中有數位 3 時,WHERE 子句的外觀如下:

WHERE field1 LIKE field2

重要:  您無法為 WHERE 子句中搭配匯總函數使用的欄位指定準則。 您可改用 HAVING 子句來為彙總欄位指定準則。

頁面頂端

使用 UNION 運算元自定義

當您想要查看多個類似選取查詢的結果組合檢視時,請使用 UNION 運算元。 例如,如果您的資料庫有 [產品] 數據表和 [服務] 數據表,且兩者都有三個字段:專屬優惠或產品或服務、價格、保固或保證。 雖然 [產品] 數據表會儲存保固資訊,而 [服務] 數據表會儲存保證資訊,但基本資訊是相同的。 您可以使用聯合查詢合併兩個資料表中的三個字段,如下所示:

SELECT name, price, warranty, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee, exclusive_offer FROM Services;

當您執行查詢時,每一組對應欄位的數據會合併成一個輸出欄位。 若要在結果中包含任何重複的列,請使用 ALL 運算符。

附註:  Select 語句的輸出字段數目必須相同、順序相同,且數據類型相同或相容。 在進行聯集查詢時,數字和文字資料類型是相容的。

如需聯合查詢的詳細資訊,請參閱 使用聯合查詢檢視多個查詢的整合結果

頁面頂端

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。