文章出處

在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條件,決定是否返回結果集

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()