php - MySQL - 记录最远的行程

标签 php mysql sql

假设我有以下 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/

相关文章:

PHP/MySQL : What should I use to manage errors?

c# - 从另一个下拉列表中选择一个值后填充下拉列表

php - while-loop div 没有反应

javascript - 为什么 CRLF 在使用 php 分配给 &lt;input&gt; 时转换为 LF

php - 无法让 JQUERY .autocomplete 与 .attr 一起工作

MySQL 瑞典语排序规则和 'é'

php - 寻求有关在 CodeIgniter 中加入查询的帮助

LINQ 的 SQL 命令(旋转)

sql - 如何使用 ST_DWithin 查找近点?

php - 如何在 AJAX 修改元素的 html 后执行 jQuery 函数?