如何使用SQL Server中的Join来查找不同的记录?

时间:2014-06-05 07:59:18

标签: sql-server join inner-join distinct-values

我必须表一个是用户,第二个是图像。 Same Uid的Image表中有很多行。如何根据Uid找到不同的记录。

User 
ID , int
Date Date

Image 
ImageID int
ImageStatus int
Uid  int  (reference from  User Table)
ImagePath varchar(50)

我正在使用以下查询,但它为UId提供了多行

select I.Uid, I.ImagePath, I.status from user u inner join Image I on u.Uid=I.Uid  order by u.Date desc

2 个答案:

答案 0 :(得分:0)

尝试将Row_number()Partition

一起使用
;with cte as
(
select I.Uid, I.ImagePath,rn=row_number()over(partition by I.Uid order by u.Date desc), I.status from user u inner join Image I on u.Uid=I.Uid
)

select * from cte where rn=1

答案 1 :(得分:0)

您不需要进行连接,而是可以在图像表中找到不同的UID。

select distinct I.Uid from Image I;

或者,如果您想明确列出特定列:

select distinct I.Uid, I.ImagePath, I.status from Image I order by u.Date desc;