假设我有以下 2 个表:
行程:
driverId (PK), dateTravelled, totalTravelDistance
farthest_trip(相同结构)
driverId (PK), dateTravelled, totalTravelDistance
仅存储最近的旅程:
REPLACE INTO JOURNEYS ('$driverId', '$totalTripDistance');
我也想为每个 driverId 存储最远的行程,但不幸的是你不能在 INSERT... ON DUPLICATE KEY UPDATE
上设置条件语句,否则我会有一个触发器,例如:
INSERT INTO farthest_trip(driverId, dateTravelled, totalTravelDistance) ON DUPLICATE KEY UPDATE dateTravelled = new.dateTravelled, totalTravelDistance = new.totalTravelDistance WHERE totalTravelDistance < new.totalTravelDistance;
所以我所做的是在插入第一个表后,在 PHP 中我检查当前距离是否比之前记录的距离更远,如果是,则更新 farthest_journey。感觉应该有更好的方法,但我不太明白,那么有没有更有效的方法呢?
最佳答案
您可以创建触发器。有点像
CREATE TRIGGER farhest_trigger BEFORE INSERT ON trips
FOR EACH ROW
BEGIN
UPDATE farthest_trips SET date=NEW.date, distance=NEW.distance WHERE driverId=NEW.driverId AND distance < NEW.distance;
END;
但是从 PHP 的角度来看,您将拥有“神奇地”执行的代码。
我认为更好的解决方案是将新行程附加到行程表并使用 SELECT 语句选择最长和最近的行程。
关于php - MySQL - 记录最远的行程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19312324/