簡體   English   中英

如何從SQL數據庫以最接近的日期更新記錄?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM