編輯 SQL 陳述式以讓查詢結果更精準

編輯 SQL 陳述式以讓查詢結果更精準

附註: 我們想要以您的語言,用最快的速度為您提供最新的說明內容。本頁面是經由自動翻譯而成,因此文中可能有文法錯誤或不準確之處。讓這些內容對您有所幫助是我們的目的。希望您能在本頁底部告訴我們這項資訊是否有幫助。此為英文文章出處,以供參考。

如果您的查詢功能不太理想,新增某些基本 SQL 陳述式可幫助讓結果更精準。現在來看一下您可能會編輯以取得想要結果的一些 SQL 陳述式和子句或部分。

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

本文內容

建立 Select 陳述式

自訂 SELECT 子句

自訂 FROM 子句

自訂 WHERE 子句

使用 UNION 運算子進行自訂

建立 Select 陳述式

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

附註: SELECT 陳述式的結尾一律是分號 (;),可能是放在最後一個子句的結尾,或是在 SQL 陳述式結尾獨自放在一行。

下列 Select 陳述式要求 Access 從 [連絡人] 資料表 (特別是在 City 欄為「石牌鄉」者) 中取得 [電子郵件地址] 和 [公司] 欄資訊。

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

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

1. SELECT 子句會列出那些您要使用之資料的所在欄,並有一個運算子 (SELECT),後面加上兩個識別項 ([電子郵件地址] 和 [公司])。如果識別項中有空格或特殊字元 (如 "E-mail Adreess"),請將識別項以方括弧括起來。

2. FROM 子句會識別來源資料表。在此範例中,此子句有運算子 (FROM),後面加上一個識別項 (連絡人)。

3. WHERE 子句為選用子句。範例中有一個運算子 (WHERE),後面加上運算式 (City="石牌鄉")。

如需有關選取查詢,請參閱建立簡單的選取查詢。

以下為常用的 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] 

變更識別項在 [資料工作表檢視] 中顯示的方式,以改善可讀性。

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

SELECT [txtCustPhone] AS [Customer Phone]

自訂 FROM 子句

自訂

範例

您可使用資料表別名,或指派給 Select 陳述式中之資料表的不同別名。如果資料表名稱的名稱很長,資料表別名特別有用,尤其是當有多個來自不同資料表但有相同名稱的欄位時。

若要從 2 個名稱皆為 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 table2
ON table1.field1 = table2.field2

瞭解關於使用聯結的查詢中加入資料表和查詢的詳細資訊。

頁面頂端

自訂 WHERE 子句

WHERE 子句包括協助限制查詢中回傳之項目數的準則。請參閱查詢準則範例和運作方式。

可以自訂基本 WHERE 子句之方式的範例之一,為限制查詢結果;假設您要尋找客戶的電話,但只記得他的姓氏為 Bagel。在此範例中,姓氏儲存在 LastName 欄位,因此 SQL 語法為:

WHERE [LastName]='Bagel'

也可使用 WHERE 子句合併具有相符資料但資料類型不同之欄的資料來源。這樣很方便,因為您無法在有不同資料類型的欄位間建立聯結。使用一個欄位作為其他欄位的準則,並包含 LIKE 關鍵字。例如,如果您只要使用來自 [資產] 資料表和 [員工] 資料表,其中 [資產] 資料表資產類型欄位中的資產類型,有 [員工] 資料表 [數量] 欄位為數字 3 的資料,則 WHERE 子句所示如下:

WHERE field1 LIKE field2

重要:  您不能為在 WHERE 子句中配合總合函數使用的欄位指定準則。但是,您可使用 HAVING 子句為已彙總的欄位指定準則。

頁面頂端

使用 UNION 運算子進行自訂

UNION 運算子在您查看來自數個類似 Select 查詢之結果的組合檢視時使用。例如,如果資料庫中有 [產品] 資料表和 [服務] 資料表,且兩者皆有三個欄位:特別優惠或產品或服務、價格、保固或保證。雖然 [產品] 資料表儲存的是保固資訊,而 [服務] 資料表儲存的是保證資訊,其基本資訊皆相同。您可使用聯集查詢合併來自兩個資料表的三個欄位,如下所示:

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

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

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

如需關於聯集查詢的詳細資料,請參閱使用聯集查詢檢視多個查詢的彙整結果

頁面頂端

增進您的 Office 技巧
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×