如何在 SQL Server 中连接类型表? [复制]

Posted

技术标签:

【中文标题】如何在 SQL Server 中连接类型表? [复制]【英文标题】:How to join type tables in SQL Server? [duplicate] 【发布时间】:2015-07-31 08:33:00 【问题描述】:

例如,假设我有以下两种类型:

CREATE TYPE TBL1 AS TABLE
(   id int,
    name varchar(max),
    status_id int )
GO

CREATE TYPE TBL2 AS TABLE
(   
    id int,
    status varchar(max)
)
GO

这些与以下 SQL 一起使用

DECLARE @T1 AS TBL1
INSERT INTO @T1 (id, name, status_id)
    VALUES  (1, 'Test1', 1),
            (2, 'Test2', 2)

DECLARE @T2 AS TBL2
INSERT INTO @T2 (id, status)
    VALUES  (1, 'New'),
            (2, 'Old')

现在,如果我想在查询中使用这些类型,则会收到错误消息:

SELECT * 
FROM @T1 
INNER JOIN @T2 ON @T1.status_id = @T2.id

错误是

必须声明标量变量'@T1'

这很奇怪,因为我将变量定义为一种类型。

【问题讨论】:

【参考方案1】:

看来你只能在FROM子句中使用变量@T1@T2。如果你给它一个alias,你可以在任何其他子句中使用它的列。

例如,以下查询将起作用:

SELECT * 
    FROM @T1 as t1 
    INNER JOIN @T2 as t2 ON t1.status_id = t2.id

【讨论】:

是的,关键是这里的别名

以上是关于如何在 SQL Server 中连接类型表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在sql server中把数据库中的日期字段转换为短日期格式

sql server 表连接类型

ASP.NET + SQL SERVER + JSON = 如何在 SQL Server 的两个连接表中获取数据并加载为 JSON?

Sql Server数据库之多表查询

在sql server 数据库字段中如何加入回车符和换行符?

在 F# 中,如何使用 Type Provider 访问 Sql Server Geography 数据类型?