我有2张桌子。
InspectionUTG和InspectionHistoryUTGTML。
select distinct InspectionUTGID
from InspectionHistoryUTG
返回
5196
5197
5198
5199
5200
-步骤2:从上述结果中获取一个ID,例如:5260
select top 1 UserTmin, RLTMin
from InspectionHistoryUTGTML
where InspectionUTGID = 5260 and RLTMin is not null
order by RLTMin
-步骤3:获取上面查询(即33.17)返回的UserTmin,并在下面针对下面查询中的TMin使用它
update InspectionHistoryUTG set
TMin = 33.17
where InspectionUTGID = 5260
现在我要做的是
create table #TableInspectionsUTGs
(
InspectionUTGID int
)
Insert into #TableInspectionsUTGs
select distinct InspectionUTGID from InspectionHistoryUTG
Select #TableInspectionsUTGs.InspectionUTGID from #TableInspectionsUTGs
While ((Select Count(#TableInspectionsUTGs.InspectionUTGID) from #TableInspectionsUTGs) > 0)
Begin
select top 1 UserTmin ,RLTMin
from InspectionHistoryUTGTML
where InspectionUTGID = #TableInspectionsUTGs.InspectionUTGID and RLTMin is not null order by RLTMin
End
但是它不起作用。我只想使用针对InspectionUTGID
的第一个查询返回的每个InspectionUTGID
在第二个查询的where子句中,然后对第二个查询中的UserTmin
使用第三个查询中的TMin
。
答案 0 :(得分:0)
如果我了解您要完成的工作,即根据Tmin
中InspectionHistoryUTG
的最新值来更新UserTmin
中的InspectionHistoryUTGTML
,那么您将要以程序方式,就像您在编写常规代码一样。但是,在编写SQL时,需要采用基于集合的编码,因为这就是SQL Server的工作方式和执行方式。
因此,您要完成的任务可能可以通过以下一条SQL更新语句来实现:
declare @InspectionHistoryUTG table (InspectionUTGID int, TMin int);
declare @InspectionHistoryUTGTML table (InspectionUTGID int, UserTmin int, RLTMin int);
insert into @InspectionHistoryUTG (InspectionUTGID)
select 1
union all select 2
union all select 3;
insert into @InspectionHistoryUTGTML (InspectionUTGID, RLTMin, UserTmin)
select 1, 1, 1
union all select 1, 2, 2
union all select 1, 3, 3
union all select 2, 1, 3
union all select 2, 2, 2
union all select 2, 3, 1
union all select 3, 1, 2
union all select 3, 2, 3
union all select 3, 3, 1;
--select * from @InspectionHistoryUTG;
--select * from @InspectionHistoryUTGTML;
update IH set
TMin = (
select top 1 IHT.UserTmin
from @InspectionHistoryUTGTML IHT
where IHT.InspectionUTGID = IH.InspectionUTGID and IHT.RLTMin is not null
order by IHT.RLTMin
)
from @InspectionHistoryUTG IH
-- Following where clause won't update if a single null TML record exists as per OPs comment
where not exists (
select 1
from @InspectionHistoryUTGTML IHT
where IHT.InspectionUTGID = IH.InspectionUTGID and IHT.RLTMin is null
)
select * from @InspectionHistoryUTG;
--select * from @InspectionHistoryUTGTML;
我们仅对InspectionHistoryUTG
使用常规更新语句,对InspectionHistoryUTGTML
使用子查询,以获取TMin
当前值InspectionUTGID
的{{1}}所需值。 / p>
因此,我们无需一次多次选择InspectionHistoryUTG
来更新@echo off
SET var=%cd%
cd C:\IBM\WebSphere\AppServer\profiles\profile1\bin
wsadmin -language jython -user wasadmin -password pass -f C:/dev/wdrSample/sample.py C:/dev/wdrSample/config.ini
cd %var%
,而是一次完成全部操作。
注意:这也是您以后提出问题的方式,因为这意味着愿意提供帮助的人们可以将SQL复制并粘贴到他们的查询分析器中,并开始使用有效的示例数据进行处理。