我正在尋找一種方法來循環訪問一個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