2017-07-14 40 views
0

這是我當前的查詢:僅僅返回首行對每個加盟

SELECT 
    u.UserName, s.StatusName 
FROM 
    UserStatus us 
    JOIN Status s on s.StatusId = us.StatusID 
    JOIN Users u on u.UserId = us.UserId 
WHERE 
    us.UserId in (select UserId from Users) 
    AND us.DateCreated > '2017-07-14 00:00:00.000' 
ORDER BY 
    us.DateCreated desc 

它返回:

enter image description here

我怎麼會只得到最近的狀態,爲每個用戶?

編輯:

我不能只是做SELECT TOP 2因爲我不知道有多少用戶存在將是你。有可能是500可能有10

+0

這似乎是[如何選擇與MAX(列值)的行,DISTINCT由SQL中的另一列?](https://stackoverflow.com/questions/612231/how-can-i-select- row-with-maxcolumn-value-distinct-by-another-column-in-sql) –

回答

2

的百分比,您可以將其設置在那裏創建日期爲每個用戶 最大像這樣

SELECT 
    u.UserName, s.StatusName 
FROM 
    UserStatus us 
    JOIN Status s on s.StatusId = us.StatusID 
    JOIN Users u on u.UserId = us.UserId 
WHERE 
    us.UserId in (select UserId from Users) 
    AND us.DateCreated = (SELECT MAX(DateCreated) FROM UserStatus us2 WHERE 
us2.UserId = us.UserId) 
ORDER BY 
    us.DateCreated desc 
0

嘗試改變

SELECT u.UserName, s.StatusName

SELECT TOP(2) u.UserName, s.StatusName

這應該只選擇前兩行! 見https://www.w3schools.com/sql/sql_top.asp

編輯:如果上面行的變化,也許選擇基於全狀態

+0

對不起,我的OP的措辭不是很清楚。我編輯它。 –

+0

TOP不起作用。在這種情況下,我碰巧知道只有2個用戶,所以SELECT TOP 2可以工作。但情況並非總是如此。請參閱我的OP –

+0

的編輯。猜猜我應該想出你最初的問題並不那麼直截了當。不要以爲我的編輯會幫助你,因爲他們可以在多個領域處於相同的狀態...... –