mysql根据其他列的最近值更新列
我有一张这样的桌子:mysql根据其他列的最近值更新列,mysql,Mysql,我有一张这样的桌子: CREATE TABLE IF NOT EXISTS `exam_results` ( `id` int(11) NOT NULL AUTO_INCREMENT, `student_code` int(11) NOT NULL, `total_level` int(11) NOT NULL, `total_rank` int(11) NOT NULL, `total_level_2` int(11) NOT NULL, `total_rank_2`
CREATE TABLE IF NOT EXISTS `exam_results` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`student_code` int(11) NOT NULL,
`total_level` int(11) NOT NULL,
`total_rank` int(11) NOT NULL,
`total_level_2` int(11) NOT NULL,
`total_rank_2` int(11) NOT NULL,
);
total_level和total_rank以及total_level_2有值,但total_rank_2为空
我想选择total_level_2的值,并在total_level内找到最接近的值,
然后用找到的行的总秩更新总秩2
如何在查询中执行此操作
更新:
例如,更新后的最后一行应该是100。
因为最后一行的total_level_2的最近值在第一行内,所以最后一行的total_rank_2将是第一行的total_rank
更新后的表:
total_level | total_rank | total_level_2 | total_rank_2
--------------------------------------------------------------------------
1500 | 100 | 2000 | 70
--------------------------------------------------------------------------
1700 | 90 | 3500 | 70
--------------------------------------------------------------------------
2000 | 70 | 1500 | 100
试试这个:
Update table set total_rank_2 =(Select total_rank
from table
where total_leve<=total_level_2
order by total_level Desc
limit 1)
会有三级考试吗?
Update table set total_rank_2 =(Select total_rank
from table
where total_leve<=total_level_2
order by total_level Desc
limit 1)
CREATE TEMPORARY TABLE IF NOT EXISTS tempresults_cal AS (select cni.*,
(select total_rank
from exam_results ci
where ci.analyze_id="'.$Params->get('analyze_id').'"
order by abs(total_level - cni.total_level_2)
limit 1
) as new_rank
from exam_results cni;
UPDATE exam_results
INNER
JOIN tempresults_cal
ON tempresults_cal.id = exam_results.id
SET exam_results.total_rank_2 = tempresults_cal.new_rank