【发布时间】:2021-06-10 12:21:22
【问题描述】:
情况:
如下表:
| Id | Price | ProductId | ValidFrom |
|---|---|---|---|
| 1 | 1,00 | 1 | 01-01-01 |
| 2 | 1,00 | 1 | 01-01-15 |
| 3 | 1,00 | 1 | 01-02-01 |
| 4 | 1,00 | 2 | 01-01-01 |
| 5 | 1,00 | 2 | 01-01-11 |
| 6 | 1,00 | 2 | 01-01-28 |
| 7 | 1,00 | 2 | 01-02-01 |
| 8 | 1,00 | 2 | 01-01-08 |
现在我想在表中添加一个新列“ValidUntil”。因为数据已经存在,所以应该为现有条目预填充新列。
更改后的表格应如下所示:
| Id | Price | ProductId | ValidFrom | ValidUntil |
|---|---|---|---|---|
| 1 | 1,00 | 1 | 01-01-01 | 01-01-15 |
| 2 | 1,00 | 1 | 01-01-15 | 01-02-01 |
| 3 | 1,00 | 1 | 01-02-01 | |
| 4 | 1,00 | 2 | 01-01-01 | 01-01-11 |
| 5 | 1,00 | 2 | 01-01-11 | 01-01-28 |
| 6 | 1,00 | 2 | 01-01-28 | 01-02-01 |
| 7 | 1,00 | 2 | 01-02-01 | 01-02-08 |
| 8 | 1,00 | 2 | 01-02-08 |
我使用 Entity Framework Core Code First Migration 来更新数据。
问题:
我先重命名该列,然后使用以下行预填充该列:
migrationBuilder.Sql("UPDATE Prices p1 SET p1.ValidUntil = (SELECT TOP 1 ValidFrom FROM Prices p2 WHERE p2.ValidFrom > p1.ValidFrom ORDER BY DATEDIFF(day, p2.ValidFrom, p1.ValidFrom))");
运行更新我收到以下错误:
“p1”附近的语法不正确。
ORDER-Keyword 附近的语法不正确。
问题:
我对 SQL 语句的经验较少,因此如果能帮助我理解该语句的问题,我将不胜感激。
另外,如果有人有更适合本案的陈述,也欢迎他。
感谢您的帮助。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
-
哦,对不起。当然。
标签: sql sql-server entity-framework-core sql-update ef-code-first