Вот мой запрос:
Select Top 10 CS.CaseStudyID,
CS.Title,
CSI.ImageFileName
From CaseStudy CS
Left Join CaseStudyImage CSI On CS.CaseStudyID = CSI.CaseStudyID
And CSI.CSImageID in(
Select Min(CSImageID) -- >not really satisfactory
From CaseStudyImage
Group By CaseStudyID
)
Order By CS.CaseStudyID ASC
Вместо min (CSImageID) я бы хотел случайную запись из моей таблицы CaseStudyImage, которая соответствует конкретному тематическому исследованию.
Может ли кто-нибудь указать мне мольбы в правильном направлении?


ORDER BY RAND() LIMIT 1?
Извини, что есть Рэнд, но он мне пока не помогает.
Этот статья описывает 3 метода случайной выборки в t-sql. Это зависит от того, насколько вы контролируете структуру своей таблицы, кому-то из них может понадобиться.
Вы можете использовать функцию ранжирования и newid () для создания случайного порядка с группировкой.
WITH CSI AS (
SELECT CSI.CaseStudyID, CSI.ImageFileName,
ROW_NUMBER() OVER(PARTITION BY CSI.CaseStudyID ORDER BY newid()) AS RowNumber
FROM CaseStudyImage CSI
)
SELECT TOP (10) CS.CaseStudyID, CS.Title, CSI.ImageFileName
FROM CaseStudy CS LEFT JOIN CSI On CS.CaseStudyID = CSI.CaseStudyID
WHERE CSI.RowNumber = 1
ORDER BY CS.CaseStudyID ASC
обычно просто ORDER BY NEWID() делает свое дело
Нет ограничений в T-SQL или rand (есть newid ()), и я теряюсь, комбинируя эквивалентный Top с order by newid ()