SQL Azure存储过程多个结果集

SQL Azure存储过程多个结果集,sql,stored-procedures,subquery,azure-sql-database,Sql,Stored Procedures,Subquery,Azure Sql Database,我正在为初始页面加载创建一个存储过程,因此有两个不同的查询和结果集 第一个查询作为嵌套的SELECT在第二个查询中完全重复 然后我的问题是,是将第一个查询的结果放入表var中,还是在第二个查询中基本上复制代码/查询 提前谢谢 --Get Most Popular Sports for each country SELECT dbo.Countries2Sports.rank, dbo.Countries2Sports.SportName,

我正在为初始页面加载创建一个存储过程,因此有两个不同的查询和结果集

第一个查询作为嵌套的
SELECT
在第二个查询中完全重复

然后我的问题是,是将第一个查询的结果放入表var中,还是在第二个查询中基本上复制代码/查询

提前谢谢

--Get Most Popular Sports for each country
    SELECT
        dbo.Countries2Sports.rank,
        dbo.Countries2Sports.SportName,
        dbo.Countries2Sports.imageURL,
        dbo.Countries2Sports.imageALTtext
    FROM
        dbo.Countries2Sports
    WHERE
        dbo.Countries2Sports.CountryCode = @CountryCode
    ORDER BY
        dbo.Countries2Sports.rank ASC

    --Get Organizations related to each country's sports
    SELECT
        dbo.Countries2Organizations.ID,
        dbo.Countries2Organizations.OrganizationCode,
        dbo.Countries2Organizations.OrganizationName,
        dbo.Countries2Organizations.LogoURL,
        dbo.Countries2Organizations.Sport
    FROM
        dbo.Countries2Organizations
    WHERE
        dbo.Countries2Organizations.Sport IN 
            (
                SELECT
                    dbo.Countries2Sports.SportName
                FROM
                    dbo.Countries2Sports
                WHERE
                    dbo.Countries2Sports.CountryCode = @CountryCode
            )
      AND (dbo.Countries2Organizations.CountryCode = @CountryCode OR 
           dbo.Countries2Organizations.CountryCode = '')

如果您不想在输出中使用结果集,则可以使用CTE,如果记录数较低,则CTE将优于temp表格,如下所示:

;WITH CTE AS (
    SELECT
        dbo.Countries2Sports.rank,
        dbo.Countries2Sports.SportName,
        dbo.Countries2Sports.imageURL,
        dbo.Countries2Sports.imageALTtext

    FROM
        dbo.Countries2Sports
    WHERE
        dbo.Countries2Sports.CountryCode = @CountryCode
    --ORDER BY
    --    dbo.Countries2Sports.rank ASC
)
--Get Organizations related to each country's sports
SELECT
    dbo.Countries2Organizations.ID,
    dbo.Countries2Organizations.OrganizationCode,
    dbo.Countries2Organizations.OrganizationName,
    dbo.Countries2Organizations.LogoURL,
    dbo.Countries2Organizations.Sport
FROM
    dbo.Countries2Organizations
WHERE
    dbo.Countries2Organizations.Sport IN 
        (
            SELECT
                dbo.Countries2Sports.SportName
            FROM
                CTE
        )
AND (   dbo.Countries2Organizations.CountryCode = @CountryCode  OR dbo.Countries2Organizations.CountryCode = '')

如果您不想在输出中使用结果集,则可以使用CTE,如果记录数较低,则CTE将优于temp表格,如下所示:

;WITH CTE AS (
    SELECT
        dbo.Countries2Sports.rank,
        dbo.Countries2Sports.SportName,
        dbo.Countries2Sports.imageURL,
        dbo.Countries2Sports.imageALTtext

    FROM
        dbo.Countries2Sports
    WHERE
        dbo.Countries2Sports.CountryCode = @CountryCode
    --ORDER BY
    --    dbo.Countries2Sports.rank ASC
)
--Get Organizations related to each country's sports
SELECT
    dbo.Countries2Organizations.ID,
    dbo.Countries2Organizations.OrganizationCode,
    dbo.Countries2Organizations.OrganizationName,
    dbo.Countries2Organizations.LogoURL,
    dbo.Countries2Organizations.Sport
FROM
    dbo.Countries2Organizations
WHERE
    dbo.Countries2Organizations.Sport IN 
        (
            SELECT
                dbo.Countries2Sports.SportName
            FROM
                CTE
        )
AND (   dbo.Countries2Organizations.CountryCode = @CountryCode  OR dbo.Countries2Organizations.CountryCode = '')

您介意分享存储产品的代码吗?解释使用的汽车会有帮助。你介意分享储存的产品代码吗?解释一下用过的车会有帮助的。谢谢。老实说,我不知道我是否需要不同的结果集——目前,第一个结果集填充一组图标,而第二个结果集填充网页的一个完全不同的组件。因此,在我缺乏经验的眼中,组合结果集似乎是前端解析的额外工作。谢谢老实说,我不知道我是否需要不同的结果集——目前,第一个结果集填充一组图标,而第二个结果集填充网页的一个完全不同的组件。因此,在我缺乏经验的眼中,组合结果集似乎是前端解析的额外工作。