程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql表別名的用法

Mysql表別名的用法

編輯:關於MYSQL數據庫

使用Mysql表別名可以解決嵌套查詢的問題,下面對MySQL表別名的使用作了詳細的闡述分析,如果您對此方面感興趣的話,不妨一看。

MySQL很久了,一直被MySQL中沒有嵌套查詢所困擾,雖然 MySQL 4.1 中支持這個特性,但是我的PHP 的程序都使用的 MySQL 函數庫,而不是MySQLi 函數庫,所以 4.1 的特性用不上。

以前遇到需要嵌套查詢的地方,一般轉化為兩個表的連接查詢來解決。可是最近做的一個程序裡面,發現需要嵌套查詢的地方是對同一個表進行的兩次查詢,所以沒法直接轉化為兩個表的連接查詢。要轉化為用 PHP 代替 MySQL 做這種事實在是太麻煩了(以前就干過這種傻事),於是一直想找個簡單的替代法。也許是靈感突發,也許是最近天天再翻 MySQL 手冊對 MySQL 的查詢有了更深入的理解,今天忽然想到可以用MySQL表別名來解決這個問題。

以前一直以為MySQL表別名只是為了能夠讓 SQL 語句能夠簡短一些,沒有其他用處,今天經過實驗才發現,原來給表起不同的別名可以讓一個表當多個表用。舉個我程序中的例子來說明一下:

我的程序中有一個分類表,為了實現無限多級分類,我在分類表中有一個 parent_id 字段,這個字段保存的是這條記錄所代表的分類的父分類 id 號,如果這個字段為 null,則表示頂級分類。現在我需要刪除一個分類,這個分類可能有子分類,因此,刪除這個分類以後,它的子分類的 parent_id 號就需要改變一下,而不能繼續指向這個不存在的分類,因此我希望刪除這個分類以後,它的子分類的父分類變為它的父分類。遇到這種情況,以前我就不知道該怎麼辦好,現在好了,用下面的語句就可以了:

  1. lock tables `categories` write, `categories` as `c1` write,   `categorIEs` as `c2` write;   
  2.  
  3. update `categories` as `c1`, `categorIEs` as `c2` set `c1`.`parent_id` = `c2`.`parent_id` where `c1`.`parent_id` = `c2`.`cat_id` and `c2`.`cat_id` = $cat_id;   
  4.  
  5. delete from `categorIEs` where `cat_id` = $cat_id;   
  6.  
  7. unlock tables;  
  8.  

這裡需要注意的一點是,鎖定表的時候,一定要把要操作的表和MySQL表別名都鎖定,否則下面的語句會出錯.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved