我是SQL Server的新手,需要關於我的一個SQL查詢的幫助。從兩個表中刪除結果中的重複數據
我有2個表格(Rating
和LikeDislike
)。
我試圖用LEFT JOIN
這樣得到來自這兩個表的數據:
SELECT
R.ID, R.Topic, R.CountLikes, R.CountDisLikes, R.Extra, LD.UserName, LD.Clikes
FROM
Rating As R
LEFT JOIN
LikeDislike AS LD ON LD.TopicID = R.ID
ORDER BY
R.ID DESC
以上SELECT
語句顯示結果良好,但也包括重複的。我想在數據顯示時刪除重複項,我嘗試使用DISTINCT
和GROUP BY
,但沒有運氣,可能是因爲我沒有正確使用它。
更新:爲了更清晰和更少混淆,讓我告訴你每個表的功能和我試圖實現的功能。
該Rating
表具有以下列(ID, Topic, CountLikes, CountDisLikes, Extra, CreatedByUser
)。它存儲主題信息和每個主題的喜好和不喜歡的數量以及創建該主題的用戶的UserID
。
LikeDisLike
表中有以下列(ID, TopicID, UserName, Clikes
)。 TopicID
是Rating
表中的ID
列的FK。
現在我想要做的是從這兩個表中獲取信息而不重複的行。我需要從Rating
表中獲取數據的所有列從LikeDislike
表+ UserName
和Clikes
列沒有任何重複的行
更新2:
下面是結果與此SELECT語句重複:
SELECT
DISTINCT ld.TopicID, R.ID, R.Topic, R.CountLikes, R.CountDisLikes,
LD.UserName, LD.Clikes
FROM
Rating AS R
LEFT JOIN
LikeDislike AS LD ON LD.TopicID = R.ID
結果輸出:
TopicID ID Topic CountLikes CountDislikes UserName Clikes
NULL 79 Testing at home 1 0 NULL NULL
NULL 80 Testing at home2 1 0 NULL NULL
NULL 82 testing dislikes 0 1 NULL NULL
1 1 Do You Like This 211 58 3 FALSE
2 2 Or This 17 25 3 TRUE
76 76 Testing part 3 7 5 2 FALSE
76 76 Testing part 3 7 5 3 FALSE
77 77 Testing part 4 16 6 2 TRUE
77 77 Testing part 4 16 6 3 TRUE
77 77 Testing part 4 16 6 5 TRUE
如果您的上述查詢返回重複項(並且您嘗試選擇不同的項目),則很可能您的某個列有所不同,可能是您的評分表中的您的ID列。你目前的產出是多少? – sgeddes
你能舉出你得到的結果和輸入數據的例子嗎? –
你列一個可能有重複的行 –