UPDATE使用MS SQL向表中插入多个值时,是否可以指定区间中的步骤?例如,我想更新表中的值,它将ID在 100 到 500 的范围内,步长为 30。或者,作为替代方案,如果没有区间,我该怎么办,所以更新以特定步骤在一定间隔内循环发生?下面我将指出一个代码示例,如果可能的话,我想在其中实现它。
UPDATE Rates
SET
Amount =
(
SELECT Amount
FROM
(
SELECT KK.Amount,
KK.OperationName
FROM
(
SELECT R.Col1,
R.RateID,
JJ.Type,
FLOOR(JJ.AmountMin + RAND() * (JJ.AmountMax + 1 - JJ.AmountMin)) AS Amount,
JJ.OperationName,
JJ.Currency
FROM Rates R
LEFT JOIN
(
SELECT *
FROM OriginTransacts OT
WHERE OT.Period = 'Month'
AND OT.OperationName = 'Clothes Shopping'
) AS JJ ON R.RateID = FLOOR(RAND() * 5 + 10)
) AS KK
) AS LL
WHERE Amount IS NOT NULL
),
OperationName =
(
SELECT OperationName
FROM
(
SELECT KK.Amount,
KK.OperationName
FROM
(
SELECT R.Col1,
R.RateID,
JJ.Type,
FLOOR(JJ.AmountMin + RAND() * (JJ.AmountMax + 1 - JJ.AmountMin)) AS Amount,
JJ.OperationName,
JJ.Currency
FROM Rates R
LEFT JOIN
(
SELECT *
FROM OriginTransacts OT
WHERE OT.Period = 'Month'
AND OT.OperationName = 'Clothes Shopping'
) AS JJ ON R.RateID = FLOOR(RAND() * 5 + 10)
) AS KK
) AS LL
WHERE Amount IS NOT NULL
)
WHERE Rates.RateID IN(FLOOR(RAND() * 5 + 1110), FLOOR(RAND() * 5 + 1140), FLOOR(RAND() * 5 + 1170), FLOOR(RAND() * 5 + 1200), FLOOR(RAND() * 5 + 1230), FLOOR(RAND() * 5 + 1260), FLOOR(RAND() * 5 + 1290), FLOOR(RAND() * 5 + 1320), FLOOR(RAND() * 5 + 1350), FLOOR(RAND() * 5 + 1380), FLOOR(RAND() * 5 + 1410), FLOOR(RAND() * 5 + 1440))
AND Rates.Amount IS NULL;
到目前为止,随手:
我认为有必要首先生成一些具有所需步骤的标识符,然后在更新时应用它。例子: