1. 程式人生 > 其它 >select 1 from ... sql語句中的1代表什麼意思?

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

原文連結 :https://blog.csdn.net/bibibrave/article/details/82961201

我們都知道,用exists代替in可以提高sql語句的執行效率,例如如下兩個例子:
檢索部門所在地為 NEW YORK’的員工資訊。

使用IN

select * from scott.emp
 where deptno in (
  select deptno from scott.dept where loc='NEW YORK');

  使用 exists

select * from scott.emp
 where  exists (
  select 1 from scott.dept where
scott.dept.deptno=scott.emp.deptno and loc='NEW YORK');

注意,這裡出現了一個特殊用法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>*,因為不用查字典表。

您的資助是我最大的動力!
金額隨意,歡迎來賞!

如果,您認為閱讀這篇部落格讓您有些收穫,不妨點選一下右下角的推薦按鈕。
如果,您希望更容易地發現我的新部落格,可以關注我哦!關注我

如果,想給予我更多的鼓勵,這可以支付寶掃碼哦!求打

因為,我的寫作熱情也離不開您的肯定支援,感謝您的閱讀,我是【未來可期】!