本文是關於 Access SQL 系列的一部分。 它說明如何撰寫 SELECT 子句,並展示你可以使用的技巧範例。
如需 Access SQL 概觀,請參閱 Access SQL:基本概念、詞彙和語法一文。
本文內容
選取欄位:SELECT 子句
陳述 SELECT 通常以子 SELECT 句開頭。 使用子句指定包含查詢中所需資料的欄位。 你也可以用表達式代替欄位,或是附加欄位。 你甚至可以用另一個 SELECT 陳述當作欄位。 這稱為子查詢。
假設你想知道客戶的電話號碼。 如果儲存這些數字的欄位命名 txtCustomerPhone為 ,子 SELECT 句看起來如下:
SELECT [txtCustomerPhone]
您可以使用方括號括住名稱。 如果名稱中沒有空格或特殊字元,括號則是可選的。 如果有,你必須使用它們。
秘訣
包含空格的名稱會比較容易閱讀,並在您設計表單和報表時為您節省時間,但您撰寫 SQL 陳述式時可能會因此需要輸入更多字元。 當您在 Access 資料庫中命名物件時,請將這點一併考慮進去。
如果你的 SQL 陳述句有兩個或以上同名欄位,請在子 SELECT 句中加入每個欄位的資料來源名稱。 使用你在條款 FROM 中使用的同一個資料來源名稱。
選取所有欄位
當你想包含資料來源中的所有欄位時,可以在子句中逐 SELECT 一列出,或使用星號萬用字元符號來 (*) 。 當你使用星號時,Access 會判斷查詢執行時資料來源包含哪些欄位,並包含全部欄位。 這有助於在新增欄位加入資料來源時保持查詢的即時更新。
你可以在 SQL 語句中用星號搭配一個或多個資料來源。 如果你在多個資料來源中使用星號,請將資料來源名稱附上星號,讓 Access 能判斷要使用哪一個來源。
舉例來說,假設你想從表格中選取所有欄位 Orders ,但只選取表格中的 Contacts 電子郵件地址。 你的 SELECT 條款可能如下:
SELECT Orders.*, Contacts.[E-mail Address]
注意
使用星號時請特別留意。 如果後來有人在資料來源新增欄位,而你沒有事先規劃,查詢結果可能就不是你想要的。
選取不同的值
如果你知道你的語句會回傳重複資料,且只想看到不同的值,請在子SELECT句中使用關鍵字DISTINCT。 例如,如果某些客戶使用相同的電話號碼, DISTINCT 請確保每個電話號碼只看一次:
SELECT DISTINCT [txtCustomerPhone]
為欄位或運算式使用替代名稱:AS 關鍵字
你可以在 Datasheet 檢視中,使用 AS 關鍵字和欄位別名 SELECT 來更改任何欄位的標籤。 欄位別名是你在查詢中為欄位指派的名稱,目的是讓結果更易閱讀。 例如,如果你想從名為 txtCustPhone的欄位中選取資料,可以透過使用欄位別名來讓結果更易閱讀:
SELECT [txtCustPhone] AS [Customer Phone]
注意
當你在子句中使用表達式 SELECT 時,必須使用欄位別名。
使用運算式進行選取
有時你想根據資料查看計算,或只回傳欄位部分值。 舉例來說,假設你想根據現場資料 BirthDate 回傳客戶出生年份。 你的 SELECT 條款可能如下:
SELECT DatePart("yyyy",[BirthDate]) AS [Birth Year]
此表達式使用 DatePart 函式及兩個參數: "yyyy" (常數) , ([BirthDate] 識別碼) 。
只要有效表達式對單一輸入值回傳單一值,就可以當作欄位。