在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是否會返回!
綜上:
select * sqlserver報和mysql類似的錯誤——你必須指定表。這種完全就算是病句吧,估計誰也不會認的!select express sqlserver 類似於 mysql ,有效語句,返回一行記錄的結果集
select express where 0=2sqlserver的特色:不需要from子句,考慮where條件,決定是否返回結果集
dual虛擬表的基礎語句
dual虛擬表是為了完成select的語法 獲取系統時間 select sysdate from dual 獲取系統日期 select current timestamp from dual 將日期轉換成字串 select to char sysdate,yyyy mm dd hh24 from d...
mysql虛擬表查詢 mysql虛擬表
虛擬表,顧名思義,就是實際上並不存在 物理上不存在 但是邏輯上存在的表。這樣說很抽象,還是看一些實際的例子吧。在mysql中,存在三種虛擬表 臨時表 記憶體表和檢視。檢視會單獨講,本節僅僅將臨時表和記憶體表。一 mysql臨時表 1 什麼是臨時表 臨時表是建立在系統臨時資料夾中的表,如果使用得當,完...
dual表是什麼表
dual是乙個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。我們可以用它來做很多事情,如下 1 檢視當前使用者,可以在 sql plus中執行下面語句 select user from dual 2 用來呼叫系統函式 select to char sysdat...