Mysql
 sql >> база данни >  >> RDS >> Mysql

Django self join , Как да конвертирате тази заявка в ORM заявка

Ще ви е по-лесно да направите това с по-нормализиран модел на данни. Помислете за използването на подход като този:

class NodeGroup(model.Model):
    pass

class NodeHealth(model.Model):
    node_group = models.ForeignKey(NodeGroup, related_name='nodes')
    health_time = models.IntegerField()
    status = models.IntegerField()

Тогава можете да направите това:

from django.db.models import Max, F

nodes = NodeHealth.objects.all().annotate(
    max_health_time=Max('node_group__nodes__health_time')
).filter(health_time=F('max_health_time'))

За съжаление в този момент върнатите възли ще имат дубликати, ако повече от един възел има една и съща стойност за health_time . Може да успеете да добавите .distinct('node_group_id') това може да изясни това, но не съм 100% положителен.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:изберете последния пълен интервал от 5 минути

  2. MySQL LIKE + php sprintf

  3. Има ли значение редът на полетата на многоколоновия индекс в MySQL

  4. Как да оптимизираме заявка 'col =col + 1' UPDATE, която се изпълнява на 100 000+ записа?

  5. PHP:Предупреждение:sort() очаква параметър 1 да бъде масив, даден ресурс