1. 程式人生 > >MYSQL表連線(十)Alias

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

MySQL 欄位別名使用例項

以下查詢選擇僱員的名字和姓氏,並組合它們以生成全名。該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表。

MySQL 表別名

兩個表都有相同的欄位名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;

結果如下:

上面的查詢從customersorders表中選擇客戶名稱和訂單數量。customers表的別名命名為c,orders表的別名命名為o,這樣,customersorders表中的欄位可以通過表別名引用。

如果在上面的查詢中不使用別名,則必須使用表名來引用它的列,這使得查詢不具備可讀性,如下所示:

SELECT
 customers.customerName,
 COUNT(orders.orderNumber) total
FROM
 customers
INNER JOIN orders ON customers.customerNumber = orders.customerNumber
GROUP BY
 customerName
ORDER BY
 total DESC