自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL表別名的另類用法

數(shù)據(jù)庫(kù) MySQL
以前一直以為MySQL中表的別名只是為了能夠讓SQL語(yǔ)句能夠簡(jiǎn)短一些,沒(méi)想到給表起不同的別名可以讓一個(gè)表當(dāng)多個(gè)表用。

MySQL表別名表不僅可以讓SQL語(yǔ)句能夠簡(jiǎn)短一些,而且可以實(shí)現(xiàn)類似嵌套查詢的功能,下面就讓我們來(lái)一起了解一下MySQL表別名的另類用法。

用MySQL很久了,一直被MySQL中沒(méi)有嵌套查詢所困擾,雖然MySQL4.1 中支持這個(gè)特性,但是我的PHP的程序都使用的MySQL函數(shù)庫(kù),而不是MySQLi函數(shù)庫(kù),所以4.1的特性用不上。

以前遇到需要嵌套查詢的地方,一般轉(zhuǎn)化為兩個(gè)表的連接查詢來(lái)解決??墒亲罱龅囊粋€(gè)程序里面,發(fā)現(xiàn)需要嵌套查詢的地方是對(duì)同一個(gè)表進(jìn)行的兩次查詢,所以沒(méi)法直接轉(zhuǎn)化為兩個(gè)表的連接查詢。要轉(zhuǎn)化為用PHP代替MySQL做這種事實(shí)在是太麻煩了(以前就干過(guò)這種傻事),于是一直想找個(gè)簡(jiǎn)單的替代法。也許是靈感突發(fā),也許是最近天天再翻MySQL手冊(cè)對(duì)MySQL的查詢有了更深入的理解,今天忽然想到可以用表的別名來(lái)解決這個(gè)問(wèn)題。

以前一直以為表的別名只是為了能夠讓SQL語(yǔ)句能夠簡(jiǎn)短一些,沒(méi)有其他用處,今天經(jīng)過(guò)實(shí)驗(yàn)才發(fā)現(xiàn),原來(lái)給表起不同的別名可以讓一個(gè)表當(dāng)多個(gè)表用。舉個(gè)我程序中的例子來(lái)說(shuō)明一下:

我的程序中有一個(gè)分類表,為了實(shí)現(xiàn)無(wú)限多級(jí)分類,我在分類表中有一個(gè)parent_id字段,這個(gè)字段保存的是這條記錄所代表的分類的父分類id號(hào),如果這個(gè)字段為null,則表示***分類?,F(xiàn)在我需要?jiǎng)h除一個(gè)分類,這個(gè)分類可能有子分類,因此,刪除這個(gè)分類以后,它的子分類的parent_id號(hào)就需要改變一下,而不能繼續(xù)指向這個(gè)不存在的分類,因此我希望刪除這個(gè)分類以后,它的子分類的父分類變?yōu)樗母阜诸悺S龅竭@種情況,以前我就不知道該怎么辦好,現(xiàn)在好了,用下面的語(yǔ)句就可以了:

  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.  

這里需要注意的一點(diǎn)是,鎖定表的時(shí)候,一定要把要操作的表和表的別名都鎖定,否則下面的語(yǔ)句會(huì)出錯(cuò)。
 

 

 

【編輯推薦】

三種mysql建表亂碼的解決方法

mysql修改表結(jié)構(gòu)的實(shí)現(xiàn)方法

三種常用的MySQL建表語(yǔ)句

實(shí)例講解MySQL連接查詢

教您如何實(shí)現(xiàn)MySQL多表插入

責(zé)任編輯:段燃 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-10-15 16:10:08

Mysql表別名

2011-04-25 13:13:02

Javafinalize

2010-11-22 15:19:28

Mysql臨時(shí)表

2010-11-23 16:29:33

MySQL鏈接表

2025-04-10 07:30:43

2010-09-27 10:04:30

Sql Update語(yǔ)

2010-08-02 16:10:06

DB2數(shù)據(jù)庫(kù)

2010-11-25 15:30:15

MySQL查詢結(jié)果

2015-03-13 09:30:23

iOS內(nèi)存管理

2011-03-16 09:42:27

Oracle臨時(shí)表

2020-03-10 18:53:16

移動(dòng)支付另類支付APP

2009-10-23 17:10:27

試用達(dá)人

2015-09-25 10:58:20

2009-08-20 17:17:02

C#哈希表

2010-04-30 15:45:56

Oracle臨時(shí)表

2012-06-15 17:50:26

2010-11-26 14:39:35

MySQL用戶變量

2010-05-18 19:03:21

linux MySQL

2010-07-16 13:10:36

Perl哈希表

2010-05-21 13:34:53

MySQL數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)