MySQL類似Oracle的dual虛擬表 |
發(fā)布時間: 2012/8/14 17:07:56 |
在mysql里也存在和Oracle里類似的dual虛擬表:官方聲明純粹是為了滿足select ... from...這一習(xí)慣問題,mysql會忽略對該表的引用。 你可千萬注意了: select * from dual; mysql會出錯——1096:沒有使用到表;而Oracle 會返回列:“du”,其值為“X”——行為和只有一行記錄的普通表是一樣的! select express [from dual]; mysql總是作為返回該表達(dá)式值的普通select語句執(zhí)行,返回一行記錄的結(jié)果集,from dual 對mysql來說根本就是擺設(shè)!而Oracle里該句必須有from dual;否則報錯! select express from dual where 0=2; mysq 和 Oracle的行為一致:該句就如同你認(rèn)為的正常表那樣——會先計算where的條件,再行計算express;這里的where條件會決定expres是否會返回! 綜上: Oracle的dual具有代碼美感,風(fēng)格統(tǒng)一,約定成俗! 不得不說的在sqlserver里,select 有mysql 和 Oracle 結(jié)合的特點: select * sqlserver報和mysql類似的錯誤——你必須指定表。這種完全就算是病句吧,估計誰也不會認(rèn)的! select express sqlserver 類似于 mysql ,有效語句,返回一行記錄的結(jié)果集 select express where 0=2 sqlserver的特色:不需要from子句,考慮where條件,決定是否返回結(jié)果集 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |