文章出處
文章列表
在mysql里也存在和oracle里類似的dual虛擬表:官方聲明純粹是為了滿足select ... from...這一習慣問題,mysql會忽略對該表的引用。
你可千萬注意了:
- select * from dual; mysql會出錯——1096:沒有使用到表;而oracle 會返回列:“du”,其值為“X”——行為和只有一行記錄的普通表是一樣的!
- select express [from dual]; mysql總是作為返回該表達式值的普通select語句執行,返回一行記錄的結果集,from dual 對mysql來說根本就是擺設!而oracle里該句必須有from dual;否則報錯!
- select express from dual where 0=2; mysq 和 oracle的行為一致:該句就如同你認為的正常表那樣——會先計算where的條件,再行計算express;這里的where條件會決定expres是否會返回!
綜上:
- oracle的dual具有代碼美感,風格統一,約定成俗!
- 不得不說的在sqlserver里,select 有mysql 和 oracle 結合的特點:
- select * sqlserver報和mysql類似的錯誤——你必須指定表。這種完全就算是病句吧,估計誰也不會認的!
- select express sqlserver 類似于 mysql ,有效語句,返回一行記錄的結果集
- select express where 0=2 sqlserver的特色:不需要from子句,考慮where條件,決定是否返回結果集
文章列表
全站熱搜