QUERY:從表中選擇一個數據,同時取一列的MAX值
我有包括像用戶名和姓
列我想要做的是一個表:
我想獲取的名字,同時獲得最大用戶ID是否
我的新手嘗試:
select FirstName from tblUsers where MAX(UserId)[email protected]
其是表示的錯誤:聚合不應出現在WHERE子句中,除非它是在含有HAVING子句或選擇列表中一個 子查詢
,且列 被聚合爲外部參考。
沒有@UserId查詢也歡迎
QUERY:從表中選擇一個數據,同時取一列的MAX值
我有包括像用戶名和姓
列我想要做的是一個表:
我想獲取的名字,同時獲得最大用戶ID是否
我的新手嘗試:
select FirstName from tblUsers where MAX(UserId)[email protected]
其是表示的錯誤:聚合不應出現在WHERE子句中,除非它是在含有HAVING子句或選擇列表中一個 子查詢
,且列 被聚合爲外部參考。
沒有@UserId查詢也歡迎
嘗試在以下使用HAVING
:
select FirstName
from tblUsers
group by FirstName
having MAX(UserId)[email protected]
更新1
如果你想只得到1具有FirstName
最高UserId
您可以在以下地址使用TOP 1
:
select top 1 FirstName
from tblUsers
order by UserId desc
更新2
我不建議使用此解決方案,但如果你想(出於任何原因)使用MAX(UserId)
,你可以這樣做:
select FirstName
from tblUsers
group by FirstName
having max(UserId) = (select max(UserId) from tblUsers)
select FirstName from tblUsers group by FirstName having MAX(UserId)[email protected]
HAVING就像聚合表達式的where子句。
但這對我來說似乎沒有意義。如果@UserId是表中最大的用戶ID,那麼你只會得到一行,所以我不太明白你想要什麼。
聚合不會在where子句的支持,因爲下面是邏輯查詢階段
from
where
group by
having
select
order by
top
所以你的情況,SQL去你的表,並在其中是未知的that從句你問的聚集結果因爲SQL在這個階段只知道表列......因爲我們使用group by進行聚合,所以下一個有權訪問group by結果的運算符具有,所以您必須引用具有或使用派生表的任何聚合或cte
與其他人一樣,你應該試着更準確地明確你想要的東西。閱讀Stanislovas的回答你的第二個評論後,我想這是你想要什麼:
SELECT FirstName
FROM tblUsers
WHERE UserId =
(SELECT MAX(UserId)
FROM tblUsers
)
子查詢首先選擇的最大用戶ID值,然後將其作爲值來選擇對應的名字。
謝謝@Henk Kok ....它會幫助我很多 – Arka
你能否包括樣本數據和預期的輸出?雖然下面的答案會做你所要求的,但我不確定這正是你想要的。一些演示記錄應該可以幫助我們解決這個問題。 –
UserID是主鍵嗎? – jarlh
不可能告訴你正在嘗試做什麼 –