編輯 SQL 陳述式以銳化查詢結果
套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

如果您的查詢工作不夠努力,添加一些基本 SQL 語句可以幫助集中您的結果。 讓我們看看幾種類型的 SQL 語句以及您可以編輯以獲得所需結果的子句或部分。

本文內容

建立 Select 陳述式

SQL select 陳述式有兩到三個子句。 SELECT 子句告訴資料庫在哪裡尋找資料,並要求它傳回特定的結果。

附註:  SELECT 陳述式一律以分號 (;) 結尾,在最後一個子句的結尾,或在 SQL 陳述式結尾的一行上。

下列 select 陳述式會要求 Access 從 [連絡人] 資料表的 [電子郵件地址] 和 [公司] 資料行取得資訊,特別是在 [城市] 資料行中找到 “西雅圖” 的位置。

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

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

1. SELECT 子句會列出包含您要使用之資料的欄,並具有運算子 (SELECT) 後接兩個識別碼 (E-mail Address 與 Company) 。 如果識別碼有空格或特殊字元 (例如「電子郵件地址」) 請將識別碼括在方括號內。

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 子句

自訂

範例

您可以使用表格別名或指派給 select 陳述式中表格的不同名稱。 如果表格名稱的名稱很長,則表格別名很有用,尤其是當您有多個來自不同表格具有相同名稱的欄位時。

若要從兩個名為 ID 的欄位中選取資料,其中一個欄位來自資料表 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 子句的範例是限制查詢的結果;假設您要找到客戶的電話號碼,並且只能記住他的姓氏為百吉餅。 在此範例中,姓氏儲存在 LastName 欄位中,因此 SQL 語法會為:

WHERE [LastName]='Bagel'

也使用 WHERE 子句來結合具有相符資料但資料類型不同的資料行的資料來源。 這很方便,因為您無法在具有不同資料類型的欄位之間建立聯結。 使用一個欄位作為另一個欄位的準則,並搭配 LIKE 關鍵字。 例如,如果您想要使用 Assets 資料表和 Employees 資料表中的資料,只有當 Assets 資料表的 [資產類型] 欄位中的資產類型在 [員工] 資料表的 [數量] 欄位中具有數字 3 時,您的 WHERE 子句的外觀如下:

WHERE field1 LIKE field2

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

頁面頂端

使用 UNION 運算子進行自訂

當您想要查看數個類似選取查詢結果的合併檢視時,請使用 UNION 運算子。 例如,如果您的資料庫有 Products 資料表和 Services 資料表,且它們都有三個欄位:獨家優惠或產品或服務、價格、保固或保證。 雖然「產品」表格會儲存保固資訊,而「服務」表格會儲存保固資訊,但基本資訊是相同的。 您可以使用聯合查詢來合併兩個資料表中的三個欄位,如下所示:

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

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

附註:  Select 陳述式必須具有相同數目的輸出欄位、相同順序,以及具有相同或相容的資料類型。 在進行聯集查詢時,數字和文字資料類型是相容的。

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

頁面頂端

需要更多協助嗎?

想要其他選項嗎?

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