我有一个表,其结构如下,名称为table1
sid userid date result
1 169110 2020-01-03 (null)
2 178662 2020-01-06 (null)
3 165381 2020-01-07 (null)
5 368031 2020-01-08 (null)
7 163626 2020-01-09 (null)现在,我需要将cft.userid和cft.date的每个行值发送到一个mysql查询(查询如下),该查询给出每行的结果值。
UPDATE collision_fact_table cft
SET cft.on_time_completion = (
SELECT DISTINCT
CONCAT(ROUND(NULLIF(SUM(facttable.compliant), 0) / NULLIF(SUM(facttable.Occurences), 0) * 100), '%') AS `Percentage Completed`
FROM fd_dw.ComplianceFactTable facttable
WHERE (CAST(facttable.`CourseModule_dueDateID` AS date) - cft.collision_date) <= 0
AND facttable.UserLicenseInUsing = 1
AND (facttable.`CourseModule_dueDateID` > 0)
AND facttable.UserId = cft.userid
GROUP BY facttable.`UserID`);例如,当我向上面的查询发送userid为169110的第一行值和date value时,我将得到69的结果,并且我需要将69更新为table1,如下所示
sid userid date result
1 169110 2020-01-03 69类似地,它应该对所有行进行迭代,并且应该像下面这样更新table1
sid userid date result
1 169110 2020-01-03 69
2 178662 2020-01-06 55
3 165381 2020-01-07 64
5 368031 2020-01-08 48
7 163626 2020-01-09 56但是当我尝试执行update查询时,它给出了错误Unknown column 'cft.date' in field list
请任何人帮帮我
发布于 2020-07-30 06:56:32
我认为您基本上需要一个相关子查询:
update table1 t1
set result = (
select cd.result
from ...
where
cd.ScheduleDateID <= t1.date
and cd.CourseModuleComplete_DateID <= t1.date
and cd.UserId = t1.userid
)您没有提供更多关于子查询本身的细节。关键是它应该返回一行,并且只返回一行:
table1中相应行的result将设置为null (无论其原始值如何)-这可能是您想要的,也可能不是您想要的错误
https://stackoverflow.com/questions/63163582
复制相似问题