天天看點

select 1 from ... sql語句中的1代表什麼意思?

我們都知道,用exists代替in可以提高sql語句的執行效率,例如如下兩個例子:

檢索部門所在地為 NEW YORK’的員工資訊。

使用IN

  使用 exists

注意,這裡出現了一個特殊用法select 1 ?

比如說,使用select 1 from table的結果是臨時得到1列(列的值為1),其行數為表的記錄數(行數),如果配合exists 語句則可以快速查詢結果是否存在,而結果的具體資料不涉及到。

就像我上述提供的例子,它隻查詢驗證dept表的字段deptno和emp的字段deptno是否有相等的情況,并且loc=‘NEW YORK’,而不需要知道dept表和emp表哪些記錄存在那樣的情況,也不需要知道相等情況下其他字段的值。在應用中,效率比select * 快。

擴充: select 1 from table;與select anycol(目的表集合中的任意一行) from table;與select * from table 從作用上來說是沒有差别的,都是檢視是否有記錄,一般是作條件查詢用的。select 1 from 中的1是一常量(可以為任意數值),查到的所有行的值都是它,但從效率上來說,1>anycol>*,因為不用查字典表。

繼續閱讀