Использование оператора 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