我正在寻找一种方法来循环访问一个SQL表并将它与另一个表进行比较,如果两个列值匹配,则更新一个表中的记录。如何查找SQL中的匹配记录,如果发现然后更新
我有两个表HplcData
和DeSchedule
,Deschedule
具有HplcData
表将具有的所有未来记录。我想要一个SQL查询,该查询将在HplcData
中查找Deschedule
表中的匹配记录,并且如果更新Deschedule
中的记录与来自HplcData
的数据并且标记完成。通过具有相同的BatchId
和SampleAge
来定义匹配。
我该如何做到这一点?
Hplc Data
BatchID | SampleAge | Ethanol | Glucose
7254 20 7.8 4.5
DeSchedule
BatchID | SampleAge | Ethanol | Glucose | SampleCompleted
7254 20 Null Null Null
7254 30 Null Null Null
所以截至目前我有一个触发器,做到这一点,但我需要一个方式,如果触发错过了记录调和的数据,我将运行此查询是一个窗口的工作。
这是我目前使用的触发查询:
ALTER TRIGGER [dbo].[Trigger_HPLC_update_details_DeSchedule] ON [dbo].[HplcData]
AFTER INSERT
AS
BEGIN
DECLARE @BatchId int, @Ethanol varchar(10), @Glucose varchar(10), @SampleAge varchar(10);
SELECT @BatchId = bd.[BatchID],@Ethanol = [Ethanol], @Glucose= [DP1Glucose], @SampleAge = bd.SampleAge
from INSERTED bd
update [dbo].[DeSchedule] SET [Ethanol] = @Ethanol, [Glucose] = @Glucose, [SampleCompleted] = 1
WHERE [BatchID] = @BatchId AND [SampleAge] = @SampleAge
END
[SQL更新从一个表到另一基于一个ID匹配](HTTP的可能的复制:// stackoverflow.com/questions/224732/sql-update-from-one-table-to-another-based-on-a-id-match) – xQbert