我正在尝试编写一个查询,我需要检查多个记录是否在同一个阶段,然后我插入一个新记录,如果记录不在同一个阶段,它应该什么也不做。
表记录示例:
RecordID StageID
1 3
1 2
5 3
7 3
7 3
当RecordID满足条件时,如果多个记录处于同一阶段那么它应该插入这样的新记录
RecordID StageID
5 4
7 4
答案 0 :(得分:1)
我认为正确措辞INSERT INTO ... SELECT
应该适用于此。下面的SELECT
查询查找所有阶段相同的所有记录,并返回相应的RecordID
以及当前阶段加1。请注意,我们可以在此处简单地使用MAX
(或MIN
或任何聚合),因为此类匹配记录的所有阶段值都相同。
INSERT INTO yourTable (RecordID, StageID)
SELECT RecordID, MAX(StageID) + 1
FROM yourTable
GROUP BY RecordID
HAVING MIN(StageID) = MAX(StageID)