我有3個表
用戶
用戶
user_id name
1 mike
Assigned_Bosses
user_id boss_id
1 3
1 5
老板們
boss_id boss_email
3 foo@bar.com
5 test@bar.com
我如何選擇一個用戶,以便在單行中獲得所有老板的電子郵件,并以;為界?
name boss_email
mike foo@bar.com;test@bar.com
下面的內容顯然不會起作用,但它是我想要做的:
SELECT concat(b.boss_email), u.name
FROM Users u
LEFT OUTER JOIN Assigned_Bosses a ON a.user_id = u.user_id
LEFT OUTER JOIN Bosses b ON b.boss_id= a.boss_id
WHERE user_id = 1
這也是SQL Server 2008,所以不是所有的功能都可用。
uj5u.com熱心網友回復:
你可以使用以下查詢
SELECT
名稱。
STUFF((SELECT '; ' b.boss_email
FROM Users u
LEFT OUTER JOIN Assigned_Bosses a ON a.user_id = u.user_id
LEFT OUTER JOIN Bosses b ON b.boss_id= a.boss_id
WHERE u.user_id = 1
for xml path(''), TYPE)。) value('text()[1]', 'NVARCHAR(MAX)'),1, LEN(' ; '),'')
from Users
where user_id = 1
uj5u.com熱心網友回復:
在SQL Server有內置的字串連接功能之前,實作相同功能的傳統方法是for xml'hack'。
為了在你的樣本資料上實作這一點,你可以試試
select u.name, Stuff((
select ';' b.boss_email
from Assigned_Bosses a
left join Bosses b on b.boss_id = a.boss_id
where a.user_id = u.user_id
for xml path(''/span>),type
).value('. ','varchar(max)'),1,1, '') as Boss_Email
from users u
where u.user_id= 1
注意--我沒有辦法在2008年進行測驗,但我相信這應該是可行的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314535.html
標籤:
上一篇:PythonIF真/假
