【问题标题】:How to select Id one by one to select from other tables using the Ids如何一一选择Id以使用Ids从其他表中进行选择
【发布时间】:2018-05-04 11:07:50
【问题描述】:

//问题:想要选择多个 Id 并插入使用这些 Id 的表中。

声明@Id varchar(100),@Sorder varchar(100),@Sorder1 varchar(100),@Sorder2 varchar(100),@attrId varchar(100) Set @Id=(select ID from [BB_INTERFACE].[dbo].[tbl_task_configuration_desc] where title in('MWI Backhaul WSIPT TrunkGroup', 'MWI 回程 WSIPT 新号码范围', 'MWI 回程 WSIPT 表示号码范围', 'MWI 互连路由器配置', 'MWI 紧急联络人', 'MWI GVA POP 分配', 'MWI GVA POP 配置', 'MWI 回程 WSIPT 中继', 'MWI 移交服务', 'MWI CPOD VLAN 分配', 'MWI CPOD VLAN 信息', 'MWI交接服务客户群', 'MWI Handover Service EMC Multichannel', 'MWI Avaya GVA 信息', 'MWI 回程以太网信息', 'MWI 切换服务互连路由器', 'MWI交接服务联络中心', 'MWI Handover Service WFO 通话录音', 'MWI 切换服务统一通信', 'MWI切换服务新号码范围', 'MWI CPOD VLAN 分配组') ) 设置@Sorder=(select max(ScreenOrder) from [BB_INTERFACE].[dbo].[tbl_task_configuration_data] where taskcodeId in (@Id))
设置@Sorder1=@Sorder+1 设置@Sorder2=@Sorder1+1

--选择@Id 作为Taskid,@Sorder 作为lastScreenorder,@Sorder1 作为NewSorder1,@Sorder2 作为NewSorder2 // 这里只发出一个Id,@Sorder1,@Sorder2 可以选择

插入 [BB_INTERFACE].[dbo].[tbl_task_configuration_data] (TaskCodeid,AttributeName,DisplayName,Visibility,Description,ScreenOrder,Control,ModifyDate,Ein,Editable,Validation,Manual,IsHighlighted,RowNum,ExtendWidth,ChargeAttribute,EditableInJourney,Parent) 价值观 (@id,'crfReference','crfReference','1','crfReference',@Sorder1,'TEXTBOX',Getdate(),'0','0','1','0','0' ,'1','0','0','ALL','1'), (@id,'productVariant','productVariant','1','productVariant',@Sorder2,'DropDown',Getdate(),'0','0','1','0','0' ,'1','0','0','ALL','1') 设置 @attrId=(从 [BB_INTERFACE].[dbo].[tbl_task_configuration_data] 中选择 Id,其中 taskcodeId in(@Id) and AttributeName='productVariant' and control='DropDown') 插入 [BB_INTERFACE].[dbo].[tbl_task_configuration_data_dropdown] (TaskCodeId,AttributeId,AttributeValue,[Enable],AttributeText) 值(@id,@attrId,'ACS Premium','1','ACS Premium'), (@id,@attrId,'ACS 选择','1','ACS 选择'), (@id,@attrId,'ACS DI','1','ACS DI')

// 要求:如何通过获取 Id 并使用这些 id 获取值并插入到两个表中来使其动态化...请帮助解决该问题

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:
     Set @TASKID=( select id from [BB_INTERFACE].[dbo]. //get ids [tbl_task_configuration_desc] 
        where title in 
    

    您的 ID 可能会返回多个值,并且在上面的代码中会失败..

    所以我建议把它放到一些临时表中

    create table #temp
    (
    id int
    )
    insert into #temp
    <<your select query>>
    

    最后使用上面的临时表代替 taskid 进行后续查询

    【讨论】:

      【解决方案2】:

      你可以按照这个方法:

      IF object_id('#TASKID') is not null
          drop table #TASKID
      
      SELECT id INTO #TASKID
             FROM [BB_INTERFACE].[dbo].[tbl_task_configuration_desc]
             WHERE title IN ('MWI Backhaul WSIPT TrunkGroup',
                             'MWI Backhaul WSIPT New Number Range',
                             ... long list of string constants .....
                             'MWI Handover Service New Number Range',
                            'MWI CPOD VLAN Allocation Group')
               AND LOB = 'AVAYA bto L2C'
      
      SELECT *
      FROM [BB_INTERFACE].[dbo].[tbl_task_configuration_data]
      --where AttributeName like'%Product Variant%'
      WHERE taskcodeId IN (select id from #TASKID)
      
      SELECT TOP 10 *
      FROM [BB_INTERFACE].[dbo].[tbl_task_configuration_data_dropdown]
      WHERE taskcodeId IN (select id from #TASKID)
      

      说明: 将 ID 插入到临时表中,使用您在此 select * into new_table from old_table 之后的选择查询,然后在您的进一步查询中使用该临时表,例如 WHERE taskcodeId IN (select id from #TASKID)

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 1970-01-01
        • 2018-06-15
        • 2013-09-05
        • 1970-01-01
        • 2016-12-25
        • 1970-01-01
        • 2018-02-21
        • 1970-01-01
        相关资源
        最近更新 更多