在mysql里也存在和oracle里類似的dual虛擬表:官方聲明純粹是為了滿足select ... from...這一習(xí)慣問(wèn)題,mysql會(huì)忽略對(duì)該表的引用
在mysql里也存在和Oracle里類似的dual虛擬表:官方聲明純粹是為了滿足select ... from...這一習(xí)慣問(wèn)題,mysql會(huì)忽略對(duì)該表的引用。
你可千萬(wàn)注意了:
select * from dual; mysql會(huì)出錯(cuò)——1096:沒(méi)有使用到表;而oracle 會(huì)返回列:“du”,其值為“X”——行為和只有一行記錄的普通表是一樣的!
select express [from dual]; mysql總是作為返回該表達(dá)式值的普通select語(yǔ)句執(zhí)行,返回一行記錄的結(jié)果集,from dual 對(duì)mysql來(lái)說(shuō)根本就是擺設(shè)!而oracle里該句必須有from dual;否則報(bào)錯(cuò)!
select express from dual where 0=2; mysq 和 oracle的行為一致:該句就如同你認(rèn)為的正常表那樣——會(huì)先計(jì)算where的條件,再行計(jì)算express;這里的where條件會(huì)決定expres是否會(huì)返回!
綜上:
oracle的dual具有代碼美感,風(fēng)格統(tǒng)一,約定成俗!
不得不說(shuō)的在sqlserver里,,select 有mysql 和 oracle 結(jié)合的特點(diǎn):
select * sqlserver報(bào)和mysql類似的錯(cuò)誤——你必須指定表。這種完全就算是病句吧,估計(jì)誰(shuí)也不會(huì)認(rèn)的!
select express sqlserver 類似于 mysql ,有效語(yǔ)句,返回一行記錄的結(jié)果集
select express where 0=2 sqlserver的特色:不需要from子句,考慮where條件,決定是否返回結(jié)果集
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com