[英]How to update record with the closest date from SQL database?
我正在嘗試更新一列,以便在日期接近實際日期的記錄中進行訓練,並且此選擇效果很好:
SELECT MIN(training_id) AS training_id, date FROM training_terms WHERE
date > CURRENT_DATE GROUP BY training_id
它為每個訓練提取最接近的日期,並且我想在此選擇中更新“可見性”列,因此我嘗試這樣寫語句:
UPDATE training_terms SET visible='1' IN (SELECT MIN(training_id)
AS training_id, date FROM training_terms WHERE date > CURRENT_DATE GROUP BY training_id);
但隨后該錯誤出現在控制台(Linux)中:
You can't specify target table 'training_terms' for update in FROM clause
在UPDATE
使用FROM
是錯誤的。
嘗試以下方法:
UPDATE training_terms
SET visible='1'
WHERE training_id IN
(SELECT training_id FROM (SELECT training_id, MIN(Abs(date - CURRENT_DATE))
FROM training_terms
WHERE date > Getdate()
GROUP BY training_id) AS t);
我們使用一個子請求為每個ID選擇一個日期和今天之間有最小差異的ID(所以最接近),然后使用Abs()
確保在所有情況下(最晚或過去的日期)都選擇最接近的ID
下面的腳本可在sql server中使用。 我將Current_Date更改為Getdate()
UPDATE training_terms
SET visible='1'
FROM training_terms
WHERE training_id
IN (SELECT MIN(training_id)
AS training_id FROM training_terms WHERE date > Getdate() GROUP BY training_id);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.