編輯 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) 後面接著兩個識別碼 (電子郵件地址和公司) 。 如果識別碼有空格或特殊字 (元,例如「電子郵件地址」) 請以方括弧括住識別碼。

2. FROM 子句會識別來源資料表。 在此範例中,運算子 (FROM) ,後面接著 Contacts) (識別碼。

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 子句中使用欄位別名。 欄位別名是您指派給欄位的名稱,以讓結果更容易閱讀。
選取 [txtCustPhone] 做為 [客戶電話]

自訂 FROM 子句

自訂 範例
您可以使用資料表別名,或是在 select 陳述式中指派給資料表的不同名稱。 如果資料表名稱名稱很長,資料表別名就非常有用,特別是當您有多個來自不同資料表且具有相同名稱的欄位時。 若要從兩個欄位選取資料,這兩個欄位都名為 ID,其中一個欄位來自資料表 tblCustomer,另一個來自資料表 tblOrder:
選取 [tblCustomer]。[識別碼],
[tblOrder]。[識別碼]
使用 AS 運算子在 FROM 子句中定義資料表別名:
自 [tblCustomer] AS [C],
[tbl訂單]AS [O]
然後,您可以在 SELECT 子句中使用這些資料表別名,如下所示:SELECT [C]。[識別碼],
[O]。[識別碼]
使用聯結將兩個資料來源的記錄配對合併為單一結果,或者指定如果相關資料表中沒有對應記錄,是否要包含任一資料表中的記錄。
聯結資料表,讓查詢合併資料表中的項目,並在其他資料表中沒有對應記錄時排除項目
以下是 FROM 子句的外觀:FROM [tblCustomer]
內部聯結 [tblOrder]
開啟 [tblCustomer]。[CustomerID]=[tblOrder]。[客戶識別碼]

關於使用聯結

聯結有兩種類型:內部聯結和外部聯結。 內部聯結在查詢中較為常見。 當您使用內部聯結執行查詢時,結果只會顯示兩個聯結資料表中存在共同值的項目。

外部聯結可指定是否要包含沒有共同值的資料。 外部聯結為定向,表示您可以指定是否要包括聯結 (中指定的第一個資料表中的所有記錄 稱為左聯結) ,或將第二個資料表的所有記錄併入聯結 (稱為右聯結) 。 外部聯結具有下列 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 陳述式必須具有相同數量的輸出欄位、順序相同,並具有相同或相容的資料類型。 在進行聯集查詢時,數字和文字資料類型是相容的。

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

頁面頂端