我是 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
and GROUP BY
,但没有运气,可能是因为我没有正确使用它。
更新:为了更清楚和更少混淆,让我告诉你每个表的确切作用以及我想要实现的目标。
该Rating
表包含以下列 ( ID, Topic, CountLikes, CountDisLikes, Extra, CreatedByUser
)。它存储每个主题以及UserID
创建该主题的用户的主题信息和喜欢和不喜欢的数量。
该LikeDisLike
表包含以下列 ( ID, TopicID, UserName, Clikes
)。是表中列TopicID
的 FK 。ID
Rating
现在我要做的是从这两个表中获取信息,而不需要重复的行。我需要从Rating
表+中获取所有列的数据,UserName
并Clikes
从LikeDislike
表中获取所有列,而不需要任何重复的行
更新 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