【发布时间】:2018-07-15 09:51:37
【问题描述】:
使用 Django 1.65 Python 3.4.1 甲骨文数据库
数据库“位置”中的表:
location | update_time | num_01 | num_02 | num_03 |
-----------+-----------------+-----------+--------+--------
B | 06 Feb 18 04:14 | 42 | 43 | 55
C | 22 Feb 17 04:14 | 77 | 99 | 23
A | 05 Feb 18 04:14 | 48 | 43 | 21
A | 01 Feb 18 04:14 | 82 | 83 | 74
我想为每个位置选择具有最新 update_time 的行。
上表的结果应该是:
location | update_time | num_01 | num_02 | num_03 |
-----------+-----------------+-----------+--------+--------
A | 05 Feb 18 04:14 | 48 | 43 | 21
B | 06 Feb 18 04:14 | 42 | 43 | 55
C | 22 Feb 17 04:14 | 77 | 99 | 23
我可以使用查询集返回每个位置的最新更新时间:
latest_updates = Locations.objects.values('location').annotate(max_date=Max('update_time')).order_by('location')
但这只会在我查找整行时返回位置和最大更新时间 - num_01、num_02、num_03。
我花了很多时间搜索 stackoverflow,但没有什么适合的。 Oracle 似乎不支持我可以开始工作的排序方式和不同的选项。
由于某种原因,我无法导入子查询,所以这对我来说不是一个选择,我坚持使用这个版本的 django 等,因为它正在工作。
该表最终将包含合理数量的数据,因此如果可能,我正在寻找一个合理有效的解决方案。
【问题讨论】:
标签: python django oracle orm django-queryset