如何从多个表中选择不重复的记录

问题描述 投票:-3回答:2

在我的数据库我有4个相关的表,我想选择不重复的记录,但我不知道该怎么做。

SELECT
    UserID = dbo.tblUsers.id
    ,dbo.tblUsers.nickname
    ,dbo.tblUsers.avatarPic
    ,dbo.tblUsers.userRate
    ,dbo.tblUsers.workedProjects
    ,dbo.tblUsersVotes.userVotes
    ,dbo.tblUsersVotes.votesCount
    ,dbo.tblUsersVotes.votesPoint
    ,dbo.tblUsersVotes.voteSticker
    ,dbo.tblUsersVotes.voteMedal
    ,OID = dbo.tblProjectOffers.id
    ,dbo.tblProjectOffers.odate
    ,ProjectID = dbo.tblProjects.id
    ,dbo.tblProjectOffers.oprice
FROM dbo.tblProjectOffers
INNER JOIN dbo.tblUsersVotes
INNER JOIN dbo.tblUsers ON dbo.tblUsersVotes.uid = dbo.tblUsers.id
INNER JOIN dbo.tblProjects ON dbo.tblUsers.id = dbo.tblProjects.UserID ON dbo.tblProjectOffers.pid = dbo.tblProjects.id
WHERE dbo.tblProjectOffers.pid = @pid

在此选择查询它显示了所有的记录,但也有重复的记录。例如,我希望它有1个用户名只返回1个记录。

这是我的表

的用户票样本

表和结果

sql sql-server tsql
2个回答
0
投票

尝试这个

SELECT DISTINCT
    UserID = dbo.tblUsers.id
    ,dbo.tblUsers.nickname
    ,dbo.tblUsers.avatarPic
    ,dbo.tblUsers.userRate
    ,dbo.tblUsers.workedProjects
    ,dbo.tblUsersVotes.userVotes
    ,dbo.tblUsersVotes.votesCount
    ,dbo.tblUsersVotes.votesPoint
    ,dbo.tblUsersVotes.voteSticker
    ,dbo.tblUsersVotes.voteMedal
    ,OID = dbo.tblProjectOffers.id
    ,dbo.tblProjectOffers.odate
    ,ProjectID = dbo.tblProjects.id
    ,dbo.tblProjectOffers.oprice
FROM dbo.tblProjectOffers
INNER JOIN dbo.tblUsersVotes
INNER JOIN dbo.tblUsers ON dbo.tblUsersVotes.uid = dbo.tblUsers.id
INNER JOIN dbo.tblProjects ON dbo.tblUsers.id = dbo.tblProjects.UserID ON dbo.tblProjectOffers.pid = dbo.tblProjects.id
WHERE dbo.tblProjectOffers.pid = @pid

0
投票

您可以使用此,

SELECT     
   distinct dbo.tblUsers.id
,dbo.tblUsers.nickname
,dbo.tblUsers.avatarPic
,dbo.tblUsers.userRate
,dbo.tblUsers.workedProjects
,dbo.tblUsersVotes.userVotes
,dbo.tblUsersVotes.votesCount
,dbo.tblUsersVotes.votesPoint
,dbo.tblUsersVotes.voteSticker
,dbo.tblUsersVotes.voteMedal
,dbo.tblProjectOffers.id
,dbo.tblProjectOffers.odate
,dbo.tblProjects.id
,dbo.tblProjectOffers.oprice
FROM dbo.tblProjectOffers
INNER JOIN dbo.tblUsersVotes
INNER JOIN dbo.tblUsers ON dbo.tblUsersVotes.uid = dbo.tblUsers.id
INNER JOIN dbo.tblProjects ON dbo.tblUsers.id = dbo.tblProjects.UserID ON 
dbo.tblProjectOffers.pid = dbo.tblProjects.id
WHERE dbo.tblProjectOffers.pid = @pid

FROM    
    dbo.tblProjectOffers 
INNER JOIN
    dbo.tblUsersVotes 
INNER JOIN
    dbo.tblUsers ON dbo.tblUsersVotes.uid = dbo.tblUsers.id 
INNER JOIN
    dbo.tblProjects ON dbo.tblUsers.id = dbo.tblProjects.UserID ON dbo.tblProjectOffers.pid = dbo.tblProjects.id
where 
    dbo.tblProjectOffers.pid=@pid
© www.soinside.com 2019 - 2024. All rights reserved.