2016-04-29 74 views
1

列隊伍目前,我有一個SQL查詢,看起來像這樣:SQL查詢複製的內容

INSERT INTO my_table 
(Date, Name, Age, City) 
SELECT 
DATE_ADD (Date, INTERVAL 7 DAY), Name, Age, City 
FROM my_table 

這讓我發揚到新周的incrimenting「日期」一欄,而複製了一致列(我有其他數字列不復制)。不過,我也有一個名爲「狀態」的列,只有當狀態爲「保持」或「待定」時,我纔想向前複製該狀態。如果狀態是其中之一,我希望它作爲「需要檢查」發揚光大。

我知道我需要一些類型的if函數在我的SQL代碼中,但我不確定如何完成此操作。

回答

1

您可以通過CASE來完成,如果Status不匹配,您可以添加爲空字符串。

INSERT INTO my_table (Date, Name, Age, City, Status) 
SELECT DATE_ADD (Date, INTERVAL 7 DAY), Name, Age, City, 
     CASE WHEN Status IN ('Hold', 'Pending') THEN 'Needs Examining' 
     ELSE '' END AS Status 
FROM my_table 

或者,如果您只想插入用於保持,待定狀態,你需要添加WHERE子句中,並在選擇條件,您可以將您所需的內容:

INSERT INTO my_table (Date, Name, Age, City, Status) 
SELECT DATE_ADD (Date, INTERVAL 7 DAY), Name, Age, City, 'Needs Examining' AS Status 
FROM my_table 
WHERE Status IN ('Hold', 'Pending') 
+0

完美!正是我需要的。謝謝 – Tortooga