目前我有一个如下所示的SQL查询:
INSERT INTO my_table
(Date, Name, Age, City)
SELECT
DATE_ADD (Date, INTERVAL 7 DAY), Name, Age, City
FROM my_table
这让我可以通过推广"日期"结束新的一周。列,同时复制一致的列(我有其他数字列,不能复制)。但是我还有一个名为" Status"我只想在状态是" Hold"或"待定"。如果状态是其中任何一个,我希望它继续作为"需要检查"。
我知道我的SQL代码中需要某种类型的if函数,但我不确定如何实现这一目标。
答案 0 :(得分: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
或者,如果您只想为Hold,Pending状态INSERT,则需要在WHERE子句和SELECT中添加条件,您可以放置所需的内容:
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')