select 1 與 select null (轉)


1.Select 1

在這里我主要討論的有以下幾個select 語句:

table表是一個數據表,假設表的行數為10行,以下同。

1:select  1 from table     

2:select count(1)  from table 

3:select sum(1) from table

對第一個select語句,我剛開始以為是“1”代表是列名,從2,3種順推得出得結果:)有點無恥吧。不過通過我自己得觀察,這樣我覺得是不對的,所以我在SQL SERVER中測試了一下,發現結果如下:

1:測試結果,得出一個行數和table表行數一樣的臨時列(暫且這么叫,我也不知道該叫什么),每行的列值是1;

2:得出一個數,該數是table表的行數;

3:得出一個數,該數是table表的行數;

然后我又用“2”測試,結果如下:

1:得出一個行數和table表行數一樣的臨時列,每行的列值是2;

2:得出一個數,該數是table表的行數;

3:得出一個數,該數是table表的行數×2的數

然后我又用更大的數測試:

1:得出一個行數和table表行數一樣的臨時列,每行的列值是我寫在select后的數;

2:還是得出一個數,該數是table表的行數;

3:得出一個數,該數是table表的行數×寫在select后的數

綜上所述:我發現第一種的寫法是增加臨時列,每行的列值是寫在select后的數;第二種是不管count(a)的a值如何變化,得出的值總是table表的行數;第三種是計算臨時列的和。

 

2.Select null

Select null 與Select 1 類似,只不過返回的列值為Null,在與Exists配合使用時,只要有行返回,則Exists子查詢仍然為True。和Select 1 不通,Select null 中不可以使用Count 和 SUm 函數。

null是一個特殊的值,既不是空也不是空格,而是一個不確定的值。
如下代碼
SELECT   null
FROM     addresses
WHERE    address_id = 1
的意義是在表addresses中有幾行滿足條件address_id = 1的值就返回幾行null值 。


免責聲明!

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



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