簡體   English   中英

需要SQL查詢的幫助?

[英]Need help with SQL query?

這是我的查詢。 我需要為每個線程只選擇一個不同的記錄但是因為我正在返回突出顯示它不能是唯一的並且為同一個步驟返回兩個記錄。

請幫我修改我的查詢以使其工作。 謝謝

SELECT DISTINCT T2.Name, T0.ThreadID, (CASE WHEN T0.Status = 0 THEN 1 ELSE 0 END) AS Highlight
FROM Messaging T0
INNER JOIN Table1 T1 ON T0.ThreadID = T1.ThreadID
INNER JOIN Table2 T2 ON T0.UserID = T2.UserID
INNER JOIN Table3 T3 ON T3.ID = T0.ID
WHERE  T0.UserID != 9149 
GROUP BY U.Name, M.ThreadID 
ORDER BY Highlight DESC

此查詢返回結果,如下所示

Name    ThreadID                                Highlight
Alex    048C8E05-422C-491A-880C-AE370194AE8C        1
Andrew  048C8E05-422C-491A-880C-AE370194AE8B        0
Alex    048C8E05-422C-491A-880C-AE370194AE8C        0



Table T0

RecordID    UserID               ThreadID                                 Status
1           9090                 048C8E05-422C-491A-880C-AE370194AE8C     0
2           9149                 048C8E05-422C-491A-880C-AE370194AE8C     1
3           9090                 048C8E05-422C-491A-880C-AE370194AE8C     1
4           5454                 048C8E05-422C-491A-880C-AE370194AE8B     0
5           9149                 048C8E05-422C-491A-880C-AE370194AE8B     0

我一直看到這個問題。 您將不得不決定您想要哪些值。 正如@James Hill所指出的那樣,你已經要求所有不同的列集,這正是你得到的。

如果您真的不想要這些值的不同組合,則需要指定要丟棄的值。 通常人們會采用MAX或MIN值。 通常它看起來像這樣:

SELECT DISTINCT T2.Name, T0.ThreadID, MAX((CASE WHEN T0.Status = 0 THEN 1 ELSE 0 END)) AS Highlight
FROM Messaging T0
INNER JOIN Table1 T1 ON T0.ThreadID = T1.ThreadID
INNER JOIN Table2 T2 ON T0.UserID = T2.UserID
INNER JOIN Table3 T3 ON T3.ID = T0.ID
WHERE  T0.UserID != 9149 
GROUP BY U.Name, M.ThreadID 
ORDER BY Highlight DESC

你將不得不測試那里的case語句是如何工作的,但這是一般的想法。

你必須選擇要使用值的狀態/亮點,如果有不止一個。 這是一個選項 - 使用max():

SELECT DISTINCT T2.Name, T0.ThreadID, max(CASE WHEN T0.Status = 0 THEN 1 ELSE 0 END) AS Highlight
FROM Messaging T0
INNER JOIN Table1 T1 ON T0.ThreadID = T1.ThreadID
INNER JOIN Table2 T2 ON T0.UserID = T2.UserID
INNER JOIN Table3 T3 ON T3.ID = T0.ID
WHERE  T0.UserID != 9149 
GROUP BY U.Name, M.ThreadID 
ORDER BY 3 DESC

您可以使用min()或任何其他聚合函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM