編輯 SQL 語句以強化查詢結果

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

如果你的查詢不夠努力,加入一些基本的 SQL 陳述句可以幫助你聚焦結果。 讓我們來看看幾種 SQL 語句類型,以及你可能會編輯的條款或部分,以達到你想要的結果。

本文內容

建立一個 Select 語句

SQL select 語句包含兩到三個子句。 SELECT 子句告訴資料庫該在哪裡尋找資料,並要求其回傳特定結果。

注意

SELECT 語句總是以分號結尾, (;) 要麼在最後一個子句的結尾,要麼在 SQL 語句的一行中單獨加起來。

以下的選擇語句要求 Access 從聯絡人表中的電子郵件地址與公司欄位取得資訊,特別是在「城市」欄位中發現「西雅圖」的位置。

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

上述查詢包含三個子句:SELECT、FROM 和 WHERE。

1. SELECT 子句列出包含你想使用的資料欄位,並有 SELECT) (接兩個識別碼 (電子郵件地址和公司) 。 若識別碼有空格或特殊字元 (如「電子郵件地址」) ,請以方括號包圍。

2. FROM 子句用來識別來源資料表。 在此範例中,運算子為 FROM () ,後接一個識別碼 (Contacts) 。

3. 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 子句中加上欄位別名。 欄位別名是你為欄位指派的名稱,讓結果更易閱讀。
選擇 [txtCustPhone] AS [客戶電話]

自訂 FROM 條款

自訂 範例
你可以使用資料表別名,或在 select 語句中指派給資料表的其他名稱。 如果資料表名稱很長,尤其是有多個欄位名稱相同,且來自不同資料表,資料表別名很有用。 從兩個名為 ID 的欄位中選取資料,其中一個來自 tblCustomer 表格,另一個來自 tblOrder 表格:
選擇 [tblCustomer]。[ID],
[待定順序]。[身分證]
使用 AS 運算子在 FROM 子句中定義表格別名:
摘自[tblCustomer] AS [C],
[待下令]AS [O]
接著你可以在 SELECT 子句中使用這些表格別名,如下:SELECT [C]。[ID],
[O]。[身分證]
使用連接將兩個資料來源的紀錄對合併成單一結果,或指定是否包含任一資料表的紀錄,若相關資料表中沒有對應紀錄。
將資料表合併,讓查詢將資料表中的項目合併,當另一資料表中沒有對應紀錄時,則排除相關項目
FROM 條款可能長什麼樣子:FROM [tblCustomer]
內部連結 [待下順序]
在 [待解決的顧客][CustomerID]=[tblOrder]。[客戶ID]

關於使用連接

接合有兩種類型,內接合與外接接。 內部連接在查詢中較為常見。 當你執行帶有內部連接的查詢時,結果只會顯示兩個連結資料表中存在共同值的項目。

外部連接則指定是否包含沒有共同值的資料。 外部連接是方向性的,也就是說你可以指定是否包含連接 (中第一個表格中的所有紀錄,稱為左連接) ,或是將第二個表格中的所有記錄納入連接 (稱為右連接) 。 外部連接的 SQL 語法如下:

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

請參閱「 連結資料表與查詢」中關於查詢中使用連接的更多資訊。

頁面頂端

自訂 WHERE 子句

WHERE 條款包含限制查詢中回傳項目數量的標準。 請參閱 查詢條件的範例 及其運作方式。

你可以自訂基本 WHERE 子句的一個例子是限制查詢的結果;假設你想找到一位顧客的電話號碼,卻只能記得他的姓氏是貝果。 在此範例中,姓氏儲存在 LastName 欄位,因此 SQL 語法為:

WHERE [LastName]='Bagel'

也可以使用 WHERE 子句來合併具有相同資料但不同資料型態的欄位資料來源。 這很方便,因為你無法在不同資料型態的欄位間建立連接。 用一個欄位作為另一個欄位的標準,並加上 LIKE 關鍵字。 例如,如果你想使用資產表和員工表的資料,只有當資產表的資產類型欄位中,員工表的數量欄位中資產類型是數字 3 時,你的 WHERE 子句會呈現如下樣貌:

WHERE field1 LIKE field2

重要

你無法在 WHERE 子句中指定欄位與聚合函數相關的條件。 您可改用 HAVING 子句來為彙總欄位指定準則。

頁面頂端

與 UNION 營運商的客製化

當你想看到多個相似選擇查詢的綜合結果時,請使用 UNION 運算子。 舉例來說,如果你的資料庫有產品表和服務表,且它們都有三個欄位:獨家優惠或產品或服務、價格、保固或保證。 雖然產品表儲存保固資訊,服務表儲存保證資訊,但基本資訊相同。 你可以用聯合查詢來合併兩個資料表的三個欄位,就像這樣:

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer 
FROM Services;

執行查詢時,來自對應欄位的每組資料會合併成一個輸出欄位。 若要包含重複的列,請使用 ALL 運算子。

注意

Select 語句必須有相同數量的輸出欄位、相同順序,以及相同或相容的資料型態。 在進行聯集查詢時,數字和文字資料類型是相容的。

欲了解更多關於聯合查詢的資訊,請參閱 使用聯合查詢以查看多個查詢的統一結果

頁面頂端