gpt4 book ai didi

mysql - 重复插入 SQL 查询并更改一列值

转载 作者:行者123 更新时间:2023-11-29 21:15:12 24 4
gpt4 key购买 nike

我有一个名为“emp_records”的表,其中包含以下条目:

Point_name |     date      | value  |
X | 2016-02-01 | 22.2 |
Y | 2016-02-01 | 44 |
Z | 2016-02-01 | 10.4 |
X | 2016-02-02 | 2.8 |
Y | 2016-02-02 | 22.5 |
Z | 2016-02-02 | 15.4 |
.
.
.

因此,每个日期都有对应的 X、Y、Z 条目。现在我想做以下事情:假设今天的日期是:2016-03-15

  1. 获取表中具有最新日期的 X,Y,Z 条目,假设 X,Y,Z 的最新条目是最新的 2016-02-20

  2. 将这些条目从 2016-02-20 复制到(当前日期 - 1),即 2016-03-14。对于每组 X、Y、Z,仅应更改日期列。例如,如果最新条目集是 2016-02-20:

Point_name |     date      | value  |
X | 2016-02-20 | 20.5 |
Y | 2016-02-20 | 39 |
Z | 2016-02-20 | 11.4 |

将此集合复制到当前日期 - 1像:

Point_name |     date      | value  |
X | 2016-02-21 | 20.5 |
Y | 2016-02-21 | 39 |
Z | 2016-02-21 | 11.4 |
X | 2016-02-22 | 20.5 |
Y | 2016-02-22 | 39 |
Z | 2016-02-22 | 11.4 |
X | 2016-02-23 | 20.5 |
Y | 2016-02-23 | 39 |
Z | 2016-02-23 | 11.4 |
X | 2016-02-24 | 20.5 |
Y | 2016-02-24 | 39 |
Z | 2016-02-24 | 11.4 |
X | 2016-02-25 | 20.5 |
Y | 2016-02-25 | 39 |
Z | 2016-02-25 | 11.4 |
. . .
. . .
. . .
X | 2016-03-14 | 20.5 |
Y | 2016-03-14 | 39 |
Z | 2016-03-14 | 11.4 |

这只是我提出疑问的一个示例表。实际的表包含 9 个不同的点名称和许多其他列。任何人都可以帮忙在单个 SQL 查询中编写这个吗?

最佳答案

此语句满足您的要求

insert into @emp_records SELECT point_name,dateadd(d,-1,GETDATE()),value
FROM @emp_records WHERE DATE IN (SELECT MAX(DATE) FROM @emp_records)

我用下面这个语句来测试它。

DECLARE @emp_records TABLE (point_name VARCHAR(5),[DATE] DATE,VALUE DECIMAL(18,2))
INSERT INTO @emp_records VALUES ('X','02/20/2016',20.3)
INSERT INTO @emp_records VALUES ('Y','02/20/2016',10.7)
INSERT INTO @emp_records VALUES ('Z','02/20/2016',12.8)
insert into @emp_records SELECT point_name,dateadd(d,-1,GETDATE()),value
FROM @emp_records WHERE DATE IN (SELECT MAX(DATE) FROM @emp_records)
SELECT * FROM @emp_records

关于mysql - 重复插入 SQL 查询并更改一列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36004924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com