You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Table A中id=2的记录设置前一日e_dt值?

解决方案:更新指定记录的日期字段

这需求很明确,咱们直接看不同数据库下的实现方式就行——毕竟不同数据库的日期处理函数略有差异:

MySQL 实现

子查询写法

适合逻辑简单的场景,直接通过子查询获取目标日期再做计算:

UPDATE `Table A`
SET e_dt = DATE_SUB((SELECT s_dt FROM `Table A` WHERE id = 10), INTERVAL 1 DAY)
WHERE id = 2;

JOIN 写法

如果数据量较大,JOIN的方式通常性能更优:

UPDATE `Table A` t1
JOIN `Table A` t2 ON t2.id = 10
SET t1.e_dt = DATE_SUB(t2.s_dt, INTERVAL 1 DAY)
WHERE t1.id = 2;

PostgreSQL 实现

PostgreSQL的日期运算更灵活,直接用减法即可:

子查询写法

UPDATE "Table A"
SET e_dt = (SELECT s_dt FROM "Table A" WHERE id = 10) - INTERVAL '1 day'
WHERE id = 2;

JOIN 写法

UPDATE "Table A" t1
SET e_dt = t2.s_dt - INTERVAL '1 day'
FROM "Table A" t2
WHERE t1.id = 2 AND t2.id = 10;

SQL Server 实现

SQL Server用DATEADD函数来处理日期加减:

子查询写法

UPDATE [Table A]
SET e_dt = DATEADD(DAY, -1, (SELECT s_dt FROM [Table A] WHERE id = 10))
WHERE id = 2;

JOIN 写法

UPDATE t1
SET t1.e_dt = DATEADD(DAY, -1, t2.s_dt)
FROM [Table A] t1
JOIN [Table A] t2 ON t2.id = 10
WHERE t1.id = 2;

注意点

如果你的表名不是带空格的Table A,而是TableA这类无空格的名称,就可以去掉反引号/双引号/方括号,直接写表名即可。

内容的提问来源于stack exchange,提问作者user3183055

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:44:14