Использование оператора select в качестве параметра coalesce

У меня есть такой запрос:

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

но это кажется, что объединение не поддерживает это. как я могу это сделать?

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
Другие вопросы по тегам