mysql 有两个表A、表B,其中表A有aa ab ac 三个字段 表B有bb ba bc bd四个字段,bc是datetime类型,表A的aa等于表B的ba 获取表A中 ac等于3、4、和5的数据,遍历该结果集,根据表A的aa查询表B, 得到多条表B的结果列表,如果查询结果列表中,没有bd等于1的结果, 将结果列表中 bd等于5的记录中的bc减去结果列表中 bd等于0的记录中的bc 将结果记录到表A的ac字段
时间: 2024-03-11 08:48:22 浏览: 98
怎么把数据库表中的数据一行一行的写入文本文件,并且每个字段加上分隔符
4星 · 用户满意度95%
好的,根据您的描述,我已经理解了您的问题。您可以使用以下 SQL 语句来实现您的需求:
```
UPDATE A
SET A.ac = (
SELECT DATEDIFF(
(SELECT B.bc FROM B WHERE B.ba = A.aa AND B.bd = 5),
(SELECT B.bc FROM B WHERE B.ba = A.aa AND B.bd = 0)
)
FROM A
WHERE A.ac IN (3, 4, 5)
)
WHERE A.ac IN (3, 4, 5);
```
这个 SQL 语句会更新表 A 中 ac 字段等于 3、4、5 的记录。对于每一条记录,它会在表 B 中查询 aa 等于该记录的 bb 字段的记录列表,并计算其中 bd 字段等于 5 的记录与 bd 字段等于 0 的记录在 bc 上的差值,然后将结果更新到该记录的 ac 字段中。
需要注意的是,这个 SQL 语句中涉及到了两个子查询,因此效率可能比较低。如果数据量较大,建议使用其他更高效的方法来实现。
阅读全文