sql - 如何在 INSERT 语句中使用返回表的函数?

标签 sql sql-server sql-server-2016

我有一个函数,它以表格的形式返回 5 列(地址)。我需要使用结果插入到另一个表中:

    INSERT INTO mytable
        (col1, address1, address2, address3, address4, address5)
    SELECT 
        Id, HouseNo, Street, PostCode, City, Country
    FROM @someTableType
    JOIN dbo.GetAddress(@customerId);

Id 列来自 @someTableType。其余列由函数返回。

但是上面的方法不起作用。

正确的做法是什么?

最佳答案

将您的查询更改为此

INSERT INTO mytable
        (col1, address1, address2, address3, address4, address5)
    SELECT 
        someTableType.Id, adress.HouseNo, adress.Street, adress.PostCode, adress.City, 
    adress.Country
    FROM @someTableType
    Cross Apply dbo.GetAddress(@customerId) as adress; 

但是你有更改功能,因为它总是返回相同的结果,因为 @customerId 总是有一个值

关于sql - 如何在 INSERT 语句中使用返回表的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52295522/

相关文章:

sql - 联合所有的总和?是否可以?

tsql - 在没有游标的情况下删除重复的行和依赖项

sql - 条件选择语句

php - 从数据库检索的网络表中删除行

sql-server - 列出所有索引

sql-server - 为什么我无法连接到本地计算机上的 SQL Server 实例?

mysql调用程序到另一个程序中

sql - 具有不同的 Order by 子句

sql-server - 案例陈述有其他选择吗?

INSERT INTO 语句中的 PHP 语法错误。SQLExecDirect 中的 SQL 状态 37000