在子查询中使用 ROW_NUMBER() 但希望内部查询中的值反映到外部查询

问题描述 投票:0回答:1

我有这样的数据

id 名字
1 AA
2 BB
3 抄送
4 DD
5 EE

鉴于此,我必须使用这样的 select 语句。

select *
from (
  select
    row_number() over (partition by id order by id asc) as row
    , id
    , name
) tmp
where tmp.id in (2,3,4) -- Just an example of condition in outer query

我无法调整外部查询 [tmp] 选择。 当我希望显示数据为

id 名字
1 2 BB
2 3 抄送
3 4 DD

有什么方法可以达到预期的

row_number()
无需创建临时表,并在每次以某种条件查询数据时使用存储过程进行删除和插入。

sql sql-server row-number
1个回答
0
投票

我现在能找到的最好的情况是使用新的临时表作为您想要的结果,并存储过程根据指定的条件截断和插入它

BEGIN TRY   
           TRUNCATE TABLE [TEMP]
            IF EXISTS (SELECT 1 FROM MAIN WHERE your condition)
            SELECT @TableName = 'MAIN'
            , @Condition = 'your condition'
            ELSE
            SELECT @TableName = 'MAIN'
            , @Condition = ' '
           
            SELECT @sqlCommand = 'INSERT INTO TEMP select 
              /**columns**/
                from '+@TableName
                +@Condition
            EXEC (@sqlCommand)

            
            SET @o_MSG = 'OK';
        COMMIT;
        END TRY                         
        BEGIN CATCH
            ROLLBACK;   
            SET @o_MSG = 'ERROR';
        END CATCH
© www.soinside.com 2019 - 2024. All rights reserved.