2

次のようなクエリがあります。

select *, coalesce((select top 1 filename from logos where uid=id),'nologo.jpg') from users

しかし、合体はそれをサポートしていないようです。これどうやってするの?

4

1 に答える 1

1

これを試してみてください -

SELECT
      u.*
    , ISNULL(filename, 'nologo.jpg')
FROM dbo.users u
OUTER APPLY
(
    SELECT TOP 1 [filename]
    FROM dbo.logos
    WHERE uid = id
) t

またはこれ -

SELECT
      u.*
    , COALESCE([filename], 'nologo.jpg')
FROM dbo.users u
LEFT JOIN (
    SELECT id, [filename] = MAX([filename])
    FROM dbo.logos
    GROUP BY id
) t ON u.uid = t.id

あなたのクエリも有効です -

SELECT
      *
    , COALESCE((
        SELECT TOP 1 [filename]
        FROM dbo.logos
        WHERE uid = id
      )
    , 'nologo.jpg')
FROM dbo.users
于 2013-08-05T10:51:44.657 に答える