mysql - 根据另一个表的条件更新表,包括函数

标签 mysql select inner-join where

我有 2 个 mysql 表,如下例所示:

汽车:

RaceID CarID    Dis Grd Date            Time    
8      1    200 A   2010-10-10  20.50
8      2    300 A   2010-10-10  30.50
8      3    200 A   2010-10-10  20.10
9      1    200 A   2010-11-10  20.00
12     1    200 A   2011-12-11  19.50   

种族:

RaceId  CarID   Dis Grd Date        Exp_Time

10  1   200 A   2011-11-11        
10  2   200 A   2011-11-11        
10  3   200 A   2011-11-11        

我想根据 CARS 表中的数据在 Exp_Time 列的 Races 表中添加数据。 例如:

RACES.Exp_Time=AVG(CARS.Time) 
WHERE
CARS.CarID=RACES.CarID
CARS.Dis=RACES.Dis
CARS.Grd=RACES.Grd
CARS.Date<RACES.Date

这个想法是,预期时间是相同距离和 grd 的前几场比赛时间的 AVG。 future 的比赛应该被排除在计算 AVG 之外。
问题是从 RACES 表中获取日期条件。 我做这个查询:

UPDATE `RACES` c
INNER JOIN (
SELECT CARS.CarID, CARS.Dis, CARS.Grd, CARS.Date, AVG(Time) AS `Exp_Time`
FROM CARS
WHERE CARS.Date<'2011-11-11'
GROUP BY CarID, Dis, Grd
)
x ON c.CarID=x.CarID AND c.Dis=x.Dis AND c.Grd=x.Grd
SET c.Exp_Time=x.Exp_Time

当我输入日期时,它会起作用 - 2011-11-11 我不知道如何从 RACES 表中获取数据。

有人可以帮忙吗? 提前致谢! 伊万

最佳答案

UPDATE `RACES` c
INNER JOIN (
SELECT CARS.CarID, CARS.Dis, CARS.Grd, CARS.Date, AVG(Time) AS `Exp_Time`
FROM CARS
WHERE CARS.Date < (SELECT  Date 
                   FROM RACES 
                   WHERE    CARS.Date<RACES.Date 
                        AND CARS.Grd=RACES.Grd 
                        AND CARS.CarID=RACES.CarID
                        AND CARS.Dis=RACES.Dis
                        LIMIT 1 
                )
                GROUP BY CarID, Dis, Grd
)
x ON c.CarID=x.CarID AND c.Dis=x.Dis AND c.Grd=x.Grd
SET c.Exp_Time=x.Exp_Time

关于mysql - 根据另一个表的条件更新表,包括函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084812/

相关文章:

jquery 选择带有 youtube embed src 的 iframe

mysql - SQL内连接合并为一行

php - 同一张表中有多个外键

Python MySQL-查询被意外缓存

php - 为什么这段代码不起作用?你能帮助我吗?

python - SQL 跨列绝对值

javascript - 当我使用 Tab 键进入选择框中时,如何在选择框中显示选项?

sql - PostgreSQL - 组合函数的 SELECT 和 RETURN VALUE

mysql - 使用另一个表和 INNER JOIN 更新表

php - php MYSQL中的多个AND OR语句