時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(1)
使用Mysql表別名可以解決嵌套查詢(xún)的問(wèn)題,下面對(duì)Mysql表別名的使用作了詳細(xì)的闡述分析,如果您對(duì)此方面感興趣的話,不妨一看。
用MySQL很久了,一直被MySQL中沒(méi)有嵌套查詢(xún)所困擾,雖然 MySQL 4.1 中支持這個(gè)特性,但是我的PHP 的程序都使用的 MySQL 函數(shù)庫(kù),而不是MySQLi 函數(shù)庫(kù),所以 4.1 的特性用不上。
以前遇到需要嵌套查詢(xún)的地方,一般轉(zhuǎn)化為兩個(gè)表的連接查詢(xún)來(lái)解決??墒亲罱龅囊粋€(gè)程序里面,發(fā)現(xiàn)需要嵌套查詢(xún)的地方是對(duì)同一個(gè)表進(jìn)行的兩次查詢(xún),所以沒(méi)法直接轉(zhuǎn)化為兩個(gè)表的連接查詢(xún)。要轉(zhuǎn)化為用 PHP 代替 MySQL 做這種事實(shí)在是太麻煩了(以前就干過(guò)這種傻事),于是一直想找個(gè)簡(jiǎn)單的替代法。也許是靈感突發(fā),也許是最近天天再翻 MySQL 手冊(cè)對(duì) MySQL 的查詢(xún)有了更深入的理解,今天忽然想到可以用Mysql表別名來(lái)解決這個(gè)問(wèn)題。
以前一直以為Mysql表別名只是為了能夠讓 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è)分類(lèi)表,為了實(shí)現(xiàn)無(wú)限多級(jí)分類(lèi),我在分類(lèi)表中有一個(gè) parent_id 字段,這個(gè)字段保存的是這條記錄所代表的分類(lèi)的父分類(lèi) id 號(hào),如果這個(gè)字段為 null,則表示頂級(jí)分類(lèi)?,F(xiàn)在我需要?jiǎng)h除一個(gè)分類(lèi),這個(gè)分類(lèi)可能有子分類(lèi),因此,刪除這個(gè)分類(lèi)以后,它的子分類(lèi)的 parent_id 號(hào)就需要改變一下,而不能繼續(xù)指向這個(gè)不存在的分類(lèi),因此我希望刪除這個(gè)分類(lèi)以后,它的子分類(lèi)的父分類(lèi)變?yōu)樗母阜诸?lèi)。遇到這種情況,以前我就不知道該怎么辦好,現(xiàn)在好了,用下面的語(yǔ)句就可以了:
- lock?tables?`categories`?write,?`categories`?as?`c1`?write,???`categories`?as?`c2`?write;? ?
- ?
- 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;? ?
- ?
- delete?from?`categories`?where?`cat_id`?=?$cat_id;? ?
- ?
- unlock?tables; ?
- ?
這里需要注意的一點(diǎn)是,鎖定表的時(shí)候,一定要把要操作的表和Mysql表別名都鎖定,否則下面的語(yǔ)句會(huì)出錯(cuò).
關(guān)鍵詞標(biāo)簽:Mysql
相關(guān)閱讀
熱門(mén)文章 Xbox Game Pass 10款MySQL數(shù)據(jù)庫(kù)客戶(hù)端圖形界面管理工具推薦 MySQL常用維護(hù)管理工具 MySQL數(shù)據(jù)庫(kù)啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié)
人氣排行 10款MySQL數(shù)據(jù)庫(kù)客戶(hù)端圖形界面管理工具推薦 MySQL數(shù)據(jù)庫(kù)啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié) Mysql 1045錯(cuò)誤解決辦法 MySQL服務(wù)器進(jìn)程CPU占用100%解決辦法 MySQL導(dǎo)出導(dǎo)入命令的用例 MySQL連接字符串的實(shí)際操作步驟匯總 MySQL無(wú)法啟動(dòng)、無(wú)法停止各種解決方法總結(jié) 三種常用的MySQL建表語(yǔ)句