dan*_*ang 4 sql-server insert t-sql sql-server-2012
我必须将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;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5102 次 |
最近记录: |