gpt4 book ai didi

mysql - 一次性更新和选择

转载 作者:行者123 更新时间:2023-11-29 03:44:21 25 4
gpt4 key购买 nike

我有一个表 dutyrecord 存储多个用户工作时间(小计)和一个用户 ID(志愿者 ID)。通过以下选择语句,我将为每个 UserID 设置总小时数:

SELECT
dutyrecord.VolunteerID,
SEC_TO_TIME( SUM( TIME_TO_SEC( SubTotal ) ) ) AS total
FROM
volunteerinfo
INNER JOIN
dutyrecord ON
( volunteerinfo.VolunteerID = dutyrecord.VolunteerID )
GROUP BY
dutyrecord.VolunteerID

我能否将更新语句与选择结合起来以更新每个用户的总小时数?我尝试了类似的方法和其他一些方法但没有成功:

UPDATE volunteerinfo 
SET
TotalHours =
(
SELECT dutyrecord.VolunteerID ,
SEC_TO_TIME( SUM( TIME_TO_SEC( SubTotal ) ) ) AS total
FROM
volunteerinfo
INNER JOIN
dutyrecord ON ( volunteerinfo.VolunteerID = dutyrecord.VolunteerID )
GROUP BY
dutyrecord.VolunteerID
)
WHERE
volunteerinfo.VolunteerID = dutyrecord.VolunteerID`

谁能帮我解决这个问题?

更新
对不起,尝试了一些其他示例,我找出了答案,并以更清晰的方式提出了我的问题。清除我的问题:我可以将这个过程合并为一个,因为我想让这个过程语言独立吗? (我只是在不同的执行中携带了 1 个 SQL 语句。)

  • 首先,我选择一个表来给我每个人的工作时间总和

    SELECT VolunteerID, SEC_TO_TIME( SUM( TIME_TO_SEC( SubTotal ) ) ) 总计FROM值类记录按志愿者 ID 分组

    例如ID: 10001, 1:00:02 ID: 2001, 10:00:34 ....

  • 之后,我想根据他们的ID把结果(total)更新到另一个表

    更新志愿者信息设置 Volunteerinfo.totalhours = dutyrecord.total其中 Volunteerinfo.VolunteerID = dutyrecord.VolunteerID

最佳答案

问题是您只更新了一个字段 TotalHours 但您的子查询选择了 2 个字段(dutyRecord.VolunteerIDtotal) .只需从您的子查询中删除 dutyrecord.VolunteerID,它应该可以工作。新查询应如下所示:

编辑:您还需要在 UPDATE 语句中包含 dutyrecord,因为您在 WHERE 中引用它> 条件。

UPDATE volunteerinfo, dutyrecord 
SET
volunteerinfo.TotalHours =
(
SELECT
SEC_TO_TIME( SUM( TIME_TO_SEC( SubTotal ) ) ) AS total
FROM
volunteerinfo
INNER JOIN
dutyrecord ON ( volunteerinfo.VolunteerID = dutyrecord.VolunteerID )
GROUP BY
dutyrecord.VolunteerID
)
WHERE
volunteerinfo.VolunteerID = dutyrecord.VolunteerID

关于mysql - 一次性更新和选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8410456/

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