2012-06-25 47 views
1

這似乎不可思議:[SQL FIDDLE]重複計數通過SQLFiddle

兩個用戶是絕對不同的即1 <> 2。那麼爲什麼不同的數字說1?

+3

使用'COUNT(DISTINCT [User])' – Lamak

+0

@Lamak ...不錯的一個;以爲我瘋了! – whytheq

+0

此外,我不知道這是否是一個學術練習,但我肯定會專注於使用適當的數據類型(日期時間)。 – swasheck

回答

3

user是保留關鍵字。如果你運行:

select DateKey, User from the_table 

,你會看到,用戶不是12,但類似user_b1234。像Lamak建議的那樣,使用[user]來引用列而不是系統變量。

+1

'日期'是好的:[小提琴](http://sqlfiddle.com/#!3/548e1/3) – whytheq

+1

我猜'日期'是一個不太保留的關鍵字,但我仍然把它放在' ]':) – Andomar

+0

大聲笑...'不太保留的詞'喜歡它+1 Sir – whytheq

3

這裏有一些答案前平面...

用戶不僅是一個保留字。它更像是一個系統定義的只讀全局變量。

  • 它計算爲當前數據庫用戶的名稱。因此,每一行都會得到相同的值和計數(不同的用戶)爲1.

  • 用戶產生與系統定義的USER_NAME()函數相同的值。

所以,如果你想用戶被視爲列名,寫[用戶]如其他人所說,正如你在做你的CREATE TABLE語句。