MYSQL表連線(十)Alias
MySQL 欄位別名
有時候欄位的名稱不具備可讀性,這樣使得查詢的輸出很難理解,要給欄位一個描述性名稱,您可以使用欄位別名。
以下語句說明如何使用欄位別名:
SELECT
[column_1 | expression] AS descriptive_name
FROM table_name;
要給欄位取一個別名,請使用AS關鍵字。如果別名包含空格,則必須使用單引號將別名引用,如:
SELECT
[column_1 | expression] AS `descriptive name`
FROM table_name;
其實,AS
關鍵字是可選的,可以在語句中省略它。注意,你也可以給表示式一個別名。
讓我們看看示例資料庫中的employees
以下查詢選擇僱員的名字和姓氏,並組合它們以生成全名。該CONCAT_WS
功能是用來連線姓和名。
SELECT
CONCAT_WS(', ', lastName, firstname)
FROM
employees;
結果如下:
列標題很難閱讀。您可以為輸出的標題分配列別名,以使其更易於閱讀,如:
SELECT
CONCAT_WS(', ', lastName, firstname) AS `Full name`
FROM
employees;
結果如下:
在MySQL中,可以使用別名來命名ORDER BY,GROUP BY和HAVING子句中的列。
以下sql語句在order by子句中使用別名進行排序:
SELECT
CONCAT_WS(', ', lastName, firstname) `Full name`
FROM
employees
ORDER BY
`Full name`;
結果如下:
請注意,您不能在WHERE子句中使用欄位別名。原因是當MySQL計算WHERE
子句時,可能尚未確定SELECT子句中指定的列的值。
MySQL 表別名
您可以使用AS
關鍵字為表指定不同的名稱。
table_name AS table_alias
表的別名稱為表別名。與欄位別名類似,AS
關鍵字是可選的,因此您可以省略它。
表別名經常使用在INNER JOIN,LEFT JOIN和子查詢中。
讓我們來看看customers
orders
表。兩個表都有相同的欄位名customerNumber,如果你
不使用表別名來指定customerNumber
欄位,您將收到一條錯誤訊息:
Error Code: 1052. Column 'customerNumber' in on clause is ambiguous
要避免此錯誤,請使用表別名來指定customerNumber
欄位:
SELECT
customerName,
COUNT(o.orderNumber) total
FROM
customers c
INNER JOIN orders o ON c.customerNumber = o.customerNumber
GROUP BY
customerName
ORDER BY
total DESC;
結果如下:
上面的查詢從customers
和orders
表中選擇客戶名稱和訂單數量。customers表的別名命名為c,orders表的別名命名為o,這樣,
表customers
和orders
表中的欄位可以通過表別名引用。
如果在上面的查詢中不使用別名,則必須使用表名來引用它的列,這使得查詢不具備可讀性,如下所示:
SELECT
customers.customerName,
COUNT(orders.orderNumber) total
FROM
customers
INNER JOIN orders ON customers.customerNumber = orders.customerNumber
GROUP BY
customerName
ORDER BY
total DESC