【发布时间】:2020-11-19 15:11:16
【问题描述】:
我有一个表格,其结构如下,名称为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`);
例如,当我将用户 ID 169110 和日期值的第一行值发送到上述查询时,我将得到 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
但是当我尝试执行更新查询时,它给了我错误 Unknown column 'cft.date' in field list
请任何人帮助我
【问题讨论】:
标签: mysql database join sql-update subquery