mysql - 将值从一个表传递到另一个表

标签 mysql

我有这张 table ,它的名字是 puntajes:

+---------------+---------------+---------+
| estudiante_ID | evaluacion_ID | puntaje |
+---------------+---------------+---------+
|             1 |             1 |      15 |
|             2 |             1 |      11 |
|             3 |             1 |      17 |
|             4 |             1 |      12 |
|             1 |             2 |      13 |
|             2 |             2 |       8 |
|             3 |             2 |      15 |
|             4 |             2 |      16 |
|             1 |             3 |       9 |
|             2 |             3 |      14 |
|             3 |             3 |       9 |
|             4 |             3 |      10 |
|             1 |             4 |      15 |
|             2 |             4 |      16 |
|             3 |             4 |       9 |
|             4 |             4 |      12 |
+---------------+---------------+---------+

我想从 evaluacion_ID 等于 3 的 puntaje 列中获得最大分数,我希望这个值位于 evaluaciones 表的“maxpuntaje”列中,就像更新一样,这是 evaluaciones 表:

+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| fecha         | date             | NO   |     | NULL    |                |
| tipo          | enum('P','E')    | NO   |     | NULL    |                |
| maxpuntaje    | int(11)          | NO   |     | NULL    |                |
| clase_ID      | int(10) unsigned | NO   |     | NULL    |                |
| evaluacion_ID | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
+---------------+------------------+------+-----+---------+----------------+

两个表都有 evaluacion_ID 列

最佳答案

我已经注释掉了限制更新和最大 puntaje 值检索的 WHERE 条件,以便您的查询可以针对所有 evaluacion_ID 运行。如果您只需要 3 个,请删除注释标记。

使用 MySQL UPDATE JOIN 语法:

UPDATE evaluaciones e
LEFT JOIN (
  SELECT evaluacion_ID, MAX(puntaje) maxpuntaje
  FROM puntajes
  -- WHERE evaluacion_ID = 3
  GROUP BY evaluacion_ID
  ) p USING (evaluacion_ID)
SET maxpuntaje = p.maxpuntaje
-- WHERE e.evaluacion_ID = 3

关于mysql - 将值从一个表传递到另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344053/

相关文章:

Mysql外键错误150

mysql - Heroku rake 数据库 :structure:load with cleardb can't find 'mysql'

mysql - 递归连接sql中的列

python - 使用 Python 将一个 .csv 中的列添加到另一个 .csv 文件

mysql - 使用子字符串条件连接表

php - jquery.countdown 日期时间问题

php - MySQL关闭计时

php - API Laravel 中的 JSON 列添加而不是插入

MYSQL 触发器填充新表

MySQL AVG() 的 varchar 可能吗?