mssql - sql max用法




為什麼COUNT(*)等於1而沒有FROM子句? (2)

Count(*)返回1,因為您的語句不是SQL。

1)在第一個句子中,由於您沒有放入要訪問的表格,因此您只將一個表格視為空表格,並且只有一行。

2)在第二種情況下:

declare @EmptyTable table ( Value int )
select COUNT(*) from @EmptyTable

回報

(No column name)
-----------
0

你把這個變量放進去,但是不要決定哪個表執行他。 為此,做一個計數,然後出去0。

這個問題在這裡已經有了答案:

為了快速檢查我用了一個查詢

select COUNT(*) LargeTable

並被驚異地看到

LargeTable
-----------
1

幾秒鐘後,我意識到我的錯誤,做到了

select COUNT(*) from LargeTable

並得到了預期的結果

(No column name)
-----------
1.000.000+

但現在我不明白為什麼COUNT(*)返回1

如果我select COUNT(*)或者declare @x int = COUNT(*); select @x declare @x int = COUNT(*); select @x

另一種情況

declare @EmptyTable table ( Value int )
select COUNT(*) from @EmptyTable

回報

(No column name)
-----------
0

我沒有在SQL標準中找到解釋( http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt ,在線源在這裡給出https://stackoverflow.com/a/8949764/ 1506454 )

為什麼COUNT(*)返回1?


因為沒有FROM子句DBMS不能知道[LargeTable]是一個表。 你猜猜這是一個COLUMN NAME別名

你可以試試看

select count(*) 'eklmnjdklfgm'
select count(*) eklmnjdklfgm
select count(*) [eklmnjdklfgm]
select count(*)

前3個例子返回eklmnjdklfgm作為列名







sql-server-2012