簡體   English   中英

具有相同表子查詢的MySQL Update

[英]MySQL Update with same table subquery

我有一個表(EMP_ID,START_DATE,END_DATE),其中包含一系列日期范圍。 我想要做的是確保它們都是連續的,因此對於任何給定的EMP_ID,END_DATE應該比下一個START_DATE小一個。
我有以下查詢,讓我識別不連續的記錄:

  SELECT H.EMP_ID, 
         H.START_DATE, 
         H.END_DATE,
         DATE(
                 (   SELECT MIN(START_DATE) 
                       FROM TSRHierarchy I
                      WHERE I.START_DATE > H.START_DATE 
                        AND I.EMP_ID = H.EMP_ID
                  )
             ) AS NEXT_DATE 
    FROM TSRHierarchy H
  HAVING END_DATE <> DATE_ADD(NEXT_DATE, INTERVAL -1 DAY)
ORDER BY H.EMP_ID, H.START_DATE;

我不能做的是弄清楚如何將其轉換為UPDATE語句? MySQL文檔聲明 這可能是我問題的一部分。
有關解決方案的任何建議嗎?

使用JOIN嘗試此UPDATE查詢

UPDATE TSRHierarchy t
         JOIN
           ( SELECT H.EMP_ID, 
                    H.START_DATE, 
                    H.END_DATE,
                    DATE((SELECT MIN(START_DATE) 
                                 FROM TSRHierarchy I
                                      WHERE I.START_DATE > H.START_DATE 
                                      AND I.EMP_ID = H.EMP_ID
                        )) AS NEXT_DATE 
             FROM TSRHierarchy H
             HAVING END_DATE <> DATE_ADD(NEXT_DATE, INTERVAL -1 DAY)
           ) AS t2
         ON t.EMP_ID = t2.EMP_ID
SET t.END_DATE = t2.NEXT_DATE 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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