日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQL表別名的另類用法

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

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

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

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

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

 
 
 
  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建表亂碼的解決方法

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

三種常用的MySQL建表語句

實例講解MySQL連接查詢

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


當(dāng)前標(biāo)題:MySQL表別名的另類用法
文章起源:http://www.5511xx.com/article/coecsho.html