次のようなテーブルがあります。
ID Section AlbumName ImageName
1 Section1 Album1 Image1
2 Section1 Album1 Image2
3 Section1 Album2 Image3
4 Section2 Album3 Image4
5 Section3 Album4 Image5
私がやろうとしているのは、各セクションから 1 つのランダムな画像を取得することです。現時点では、Album1 に複数の画像しかないことがわかっています。これはテスト用です。
私が使用しているSQLは
Select Distinct g.albumName,
(select top 1 gl.imageName
from Gallery gl
where gl.Section = g.Section
and gl.AlbumName = g.AlbumName
order by newid()
) as imageName
from Gallery g
しかし、これは常に私が期待する結果をもたらすとは限りません。Album1 に対して 1 つの imageName を返す場合もあれば、両方の imageName を返す場合もあります。
サブクエリを単独で実行し、g.section を section1 に、g.AlbumName を Album1 に置き換えると、返される結果は 1 つだけなので、where 条件の使用方法に関係があることはわかっていますが、何が悪いのかわからない。
なぜこれが起こるのか、そしてクエリを変更して必要なものを取得する方法を誰かが提案できますか?