0

我有 2 个表画廊(Gallery_ID,名称)和 Gallery_Image(ID,Gallery_ID,图像)。我的问题是我只想选择每个画廊的一张图片

我试过这个查询

SELECT distinct  top 1  Gallery.Gallery_ID, Gallery.Gallery_Name,Gallery.Gallery_Name  as Gallery_Image
FROM         Gallery 
    union
select distinct Gallery_Image.Gallery_ID,Gallery_Image.Gallery_Images as Gallery_Name,Gallery_Image.Gallery_Images
from Gallery_Image inner join Gallery on Gallery.Gallery_ID=Gallery_Image.Gallery_ID
where Gallery_Image.Gallery_ID in(select Gallery_ID from Gallery)
4

1 回答 1

1

你说:“我只想选择每个画廊的一张图片。” 这是有道理的。我不知道您的查询与此问题有何关系。

您没有指定您正在使用哪个数据库。一个好的方法是使用row_number()为图库中的图像分配顺序。关键是随机排序。最后一部分取决于数据库。这是 SQL Server 语法:

select gi.*
from (select gi.*, row_number() over (partition by Gallery_Id order by newid()) as seqnum
      from Gallery_Image gi
     ) gi
where seqnum = 1;

编辑:

要从Gallery表中获取信息,请将其加入:

select gi.*
from (select gi.*, row_number() over (partition by Gallery_Id order by newid()) as seqnum
      from Gallery_Image gi
     ) gi join
     Gallery g
     on gi.Gallery_Id = g.Gallery_Id and
        seqnum = 1;

我还移动了将“第一个”图像从on子句中提取到where子句的逻辑。

于 2013-08-31T15:39:25.113 回答