我在一家房地产租赁公司实习。我负责开发symfony下的客户关系管理。
因此,我的一个实体是财产(房屋)及其可用性。见下表结构。
我现在面临的问题是,可用性是为每天(例如28/01、29/01、30/01)定义的,而不是为一段时间(例如28/01->30/01)定义的。所以,这张table真的很重(约71万行)。此外,在我们更改编辑可用性的方式之前,它为同一日期创建了一个新行,而不是编辑它。所以,这张表有很多重复。
我想要的是,通过只保留其中具有最大值的行来减轻db date_modif_availabilities
同样的道理 date_availabilities
以及 id_properties
.
例如,如果我有这些行(可用性\重复项):
我只想保留最新修改的行,如下所示(可用性\u保留\u最大值):
问题是,我对sql语言了解不够。我能写一些基本的脚本,但不能写复杂的子查询。即使是我找到的代码样本。
事先谢谢你的帮助。
2条答案
按热度按时间jhiyze9q1#
您可以选择不存在修改日期更大的元素的元素。
像这样:
这当然有一个前提条件,那就是三列的组合
date_availabilities
,id_properties
以及date_modif_availabilities
是独一无二的。此外,似乎所有列(pk除外)都可能是
NULL
. 我觉得有点奇怪。hujrc8aj2#
你可以用
subquery
:但是,如果您担心性能问题,那么您需要索引
(id_properties, date_availabilities and id_availabilities)
.