Sql-Server
從單行插入兩行
我必須將使用者從
usersToImport
表中導入到userContact
表中。usersToImport
在一行中包含每個使用者的電話和電子郵件資訊,但userContact
每行儲存一種聯繫資訊。這是我目前的做法:http ://sqlfiddle.com/#!6/c9b2e/1 (出於某種原因,它沒有輸出任何東西,但程式碼在 SSMS 中有效)。
有沒有辦法在不使用兩個不同選擇的情況下做到這一點?也許自我加入
usersToImport
或以case
某種方式使用。
正如 Aaron 提到的,由於某種原因,您需要終止 Fiddle 中的每個語句。
無論如何,對於查詢,您可以使用
CROSS APPLY
擴展結果集。此方法僅掃描一次基表,並且對每一行應用子查詢,在這種情況下實際上選擇了兩行:INSERT INTO userContact(userId, contactType, contactInfo) SELECT ui.userId, c.contactType, c.contactInfo FROM usersToImport ui CROSS APPLY ( SELECT 'email' AS contactType, ui.email AS contactInfo UNION ALL SELECT 'telephone', ui.telephone ) c;