我想合并 2 张桌子。 一个是带有汽车数据的车牌,另一个是相关的道路登记公里数数据。我希望在道路记录中输入新数据时运行触发器,并更新汽车表中汽车的公里/小时,但始终仅使用最高值。
Nyilvantartas_auto:
自动_id | 类型 | km_ora_allas |
---|---|---|
AAA111 | 黑色 | 10 |
BBB222 | 白色 | 20 |
CCC333 | 黄色 | 30 |
Nyilvantartas_utnyilvantarto:
自动_id | km_ora_allas | 日期 |
---|---|---|
AAA111 | 10.000 | 2023.02.01 |
BBB222 | 5.000 | 2023.03.01 |
CCC333 | 3.000 | 2023.05.01 |
AAA111 | 13.000 | 2023.04.01 |
BBB222 | 8.000 | 2023.07.01 |
CCC333 | 5.000 | 2023.08.01 |
预先感谢您的帮助。
UPDATE Nyilvantartas_auto
SET Nyilvantartas_auto.km_ora_allas = MAX(Nyilvantartas_utnyilvantarto.km_ora_allas)
FROM Nyilvantartas_auto
INNER JOIN Nyilvantartas_utnyilvantarto
ON (Nyilvantartas_utnyilvantarto.auto_id = Nyilvantartas_auto.auto_id)
车表里没有
km_ora_allas
。一件事是在道路表中执行插入时更新汽车表;另一种是添加一列。
无论如何,解决第一个问题的最简单方法(并且可能表现更好,因为您不必加入表)是在代码中(而不是在数据库中)包含一些逻辑,当您在
上执行插入时road_registration_table
您还更新了car_table
。更新查询变得更简单:
UPDATE car_table
SET velocity = MAX(velocity, new_value)
WHERE auto_id = 1234
第二题可以这样完成。更改表格以添加列
ALTER TABLE car_table
ADD velocity int(required_size) null
然后更新
car_table
类似于您编写的查询(但语法 取决于您正在使用的特定 DBMS )。