MySql類似Oracle的dual虛擬表


在mysql里也存在和oracle里類似的dual虛擬表:官方聲明純粹是為了滿足select ... from...這一習慣問題,mysql會忽略對該表的引用。

你可千萬注意了:

  1. select * from dual;     mysql會出錯——1096:沒有使用到表;而oracle 會返回列:“du”,其值為“X”——行為和只有一行記錄的普通表是一樣的!
  2. select  express [from dual];  mysql總是作為返回該表達式值的普通select語句執行,返回一行記錄的結果集,from dual 對mysql來說根本就是擺設!而oracle里該句必須有from dual;否則報錯!
  3. select  express from dual where 0=2;   mysq 和 oracle的行為一致:該句就如同你認為的正常表那樣——會先計算where的條件,再行計算express;這里的where條件會決定expres是否會返回!

綜上:

  • oracle的dual具有代碼美感,風格統一,約定成俗!
  • 不得不說的在sqlserver里,select 有mysql 和 oracle 結合的特點:
    1. select *   sqlserver報和mysql類似的錯誤——你必須指定表。這種完全就算是病句吧,估計誰也不會認的!
    2. select express   sqlserver 類似於 mysql ,有效語句,返回一行記錄的結果集
    3. select express where 0=2  sqlserver的特色:不需要from子句,考慮where條件,決定是否返回結果集


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM