0

我试图弄清楚我的数据库中有多少用户有默认参数。我有以下查询:

SELECT TOP 4000 Users.Id
  FROM Users
  JOIN Streams ON Users.Id = Streams.UserId
  JOIN Playlists ON Streams.Id = Playlists.StreamId
  WHERE Playlists.FirstItemId = '00000000-0000-0000-0000-000000000000'

我认为这很好,但我意识到这还不够具体。目前,仍选择具有 2 个播放列表(一个已填充,一个未填充)的流。如果任何子播放列表的 FirstItemId 设置为“00000000-0000-0000-0000-000000000000”以外的值,我不想选择流。

这个额外的选择有点超出我的范围。我已经尝试了一段时间,但无法获得语法。有人能指出我正确的方向吗?

4

1 回答 1

1

尝试类似:

SELECT TOP 4000 Users.Id
  FROM Users
  JOIN (SELECT Playlists.StreamId FROM Streams JOIN Playlists ON Streams.Id = Playlists.StreamId
        GROUP BY Playlists.StreamID HAVING MAX(CAST(Playlists.FirstItemId as VARCHAR(36)) = '00000000-0000-0000-0000-000000000000') as StreamPlaylists
ON Users.Id = StreamPlaylists.UserId

您需要对播放列表和流进行分组子查询。选择最大值FirstItemId为“00000000-0000-0000-0000-000000000000”的播放列表会排除具有其他(更高排序)GUID 的播放列表。GUID 不能MIN/MAX编辑,因此CASTto VARCHAR.

于 2013-07-22T05:19:06.537 回答