我有两个表,事件和照片,它们通过'Event_ID'列相关联。我希望从每个活动中选择一张随机照片并显示它们。
我该怎么做?
我有以下内容显示所有相关的照片。如何将每个事件限制为一个?
SELECT Photos.Photo_Id, Photos.Photo_Path, Photos.Event_Id, Events.Event_Title,
Events.Event_StartDate, Events.Event_EndDate FROM Photos, Events
WHERE
Photos.Event_Id = Events.Event_Id AND
Events.Event_EndDate < GETDATE() AND
Events.Event_EndDate IS NOT NULL AND
Events.Event_StartDate IS NOT NULL
ORDER BY NEWID()
由于
Luke Stratton
答案 0 :(得分:4)
您可以使用cross apply
为每个事件检索一张随机照片:
select *
from Events
cross apply (
select top 1 *
from Photos
where Photos.Event_Id = Events.Event_Id
order by newid()
) RandomPhoto
where Events.Event_EndDate < GETDATE()
and Events.Event_EndDate IS NOT NULL
and Events.Event_StartDate IS NOT NULL
如果您想要检索没有任何照片的活动,请使用outer apply
。
答案 1 :(得分:0)
看看this xaprb article。它显示了您可以使用的几种技术。它建议采用最小行和自连接方法。