【问题标题】:Delete maxdate From table without ID [duplicate]从没有ID的表中删除maxdate [重复]
【发布时间】:2018-07-15 09:58:25
【问题描述】:

我想删除日期最高的行,但我正在使用的表没有自动递增 ID,而是它有多个具有相同 ID 的行,但每行都有不同的信息。

我想删除最高日期,因为这也是使用该 ID 插入的最后一个日期,这就是我要使用 MAX 的原因,否则我将删除所有具有该 ID 的行。

现在我正在尝试(这是我的 PHP 文件中的查询):

DELETE FROM onderhoudsLog 
WHERE systeemContractID = :systeemContractID 
AND startDatum = MAX(:startDatum)

删除不起作用。

这是我的 PHP 函数:

function onderhoud($id, $startDatum){
  $query = "DELETE FROM onderhoudsLog WHERE systeemContractID = :id AND startDatum = MAX(:startDatum");
  $q = $this->DB->prepare($query);
  $q->execute(Array(
    ':id' => $id,
    ':startDatum' => $startDatum,
  ));
}

【问题讨论】:

  • 这看起来像是您在 PHP 中使用的查询。所以请显示 PHP 以及原始查询。查询可能没问题,但你绑定参数的方式可能是错误的
  • 尝试使用子查询返回max startDatum
  • @RiggsFolly 我添加了我的 PHP 函数
  • 也许你应该从阅读MAX() function的手册开始

标签: php mysql


【解决方案1】:

按日期排序数据,只删除第一条记录

DELETE FROM onderhoudsLog 
WHERE systeemContractID = :systeemContractID 
ORDER BY startDatum DESC
LIMIT 1

【讨论】:

  • 感谢您的回答!现在可以工作了:)!!!非常感谢。抱歉,我不能说这是“最好的评论”,因为我还没有足够的声誉:(
  • @YannickGijsbers 我建议你接受答案(meta.stackexchange.com/questions/5234/…),如果它们有效的话......你已经有一个不被接受的问题连续
  • @RaymondNijland 感谢您告诉我!我马上就做了!
猜你喜欢
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 2013-04-01
相关资源
最近更新 更多