【问题标题】:How do I assign multiple inline variables in T-SQL?如何在 T-SQL 中分配多个内联变量?
【发布时间】:2013-01-09 20:20:12
【问题描述】:

我正在尝试从子查询中选择多个变量以便以后使用。这是我的代码:

DECLARE @MarketplaceName VARCHAR(50),
    @ProductFieldID INT,
    @FromValue VARCHAR(255) = (
        SELECT mcvm.MarketplaceName,
            mcvm.ProductFieldID,
            mcvm.FromValue
        FROM [Meta].[MarketplaceCategoryValueMapping] AS mcvm
        WHERE mcvm.MarketplaceCategoryValueMappingID = @MapID
        )

我收到以下错误消息:

当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。

我正在尝试从mcvm.MarketplaceName 等映射@MarketplaceName

我希望不必为每个变量编写多个 SELECT 语句。

【问题讨论】:

    标签: sql sql-server tsql subquery


    【解决方案1】:

    你想这样做吗?

    DECLARE @MarketplaceName VARCHAR(50),
            @ProductFieldID INT,
            @FromValue VARCHAR(255)
    SELECT  @MarketplaceName    = mcvm.MarketplaceName,
            @ProductFieldID     = mcvm.ProductFieldID,
            @FromValue          = mcvm.FromValue
    FROM [Meta].[MarketplaceCategoryValueMapping] AS mcvm
    WHERE mcvm.MarketplaceCategoryValueMappingID = @MapID
    

    【讨论】:

    • 是的,就是这样。谢谢。
    【解决方案2】:

    这就是你的做法。另外,这不是子查询,它只是一个查询。

    DECLARE @MarketplaceName VARCHAR(50),
            @ProductFieldID INT,
            @FromValue VARCHAR(255)
    
    
    SELECT @MarketplaceName = mcvm.MarketplaceName,
           @ProductFieldID = mcvm.ProductFieldID,
           @FromValue = mcvm.FromValue
    FROM [Meta].[MarketplaceCategoryValueMapping] AS mcvm
    WHERE mcvm.MarketplaceCategoryValueMappingID = @MapID
    

    【讨论】:

    • 知道了,我认为尝试使用子查询来做这件事让我感到困惑。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2011-10-18
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多