mysql - 如何使用 Django 的 ORM 创建临时表以按两个条件对同一列进行排序?

标签 mysql django

CREATE TEMPORARY TABLE TEMP (SELECT * FROM TABLE ORDER BY COLUMN_A);
SELECT * FROM TEMP ORDER BY COLUMN_B;

我有一张表存储每个城市的最后 24 小时下午点,我想选择每个城市的最新下午点。所以我使用“Select * from city_pm order by date desc limit the_count_of_city”,然后我想要一个每个城市的最新 pm 点的排名,所以我使用之前的选择来创建一个临时表,并按 pm 点对表进行排序......这就是我试图完成的,我想不出更好的所以我决定创建一个临时表。

最佳答案

我相信左联接可能有助于解决这种情况。您的目标是按最后一个 PM 点对城市进行排序。

假设您的 city 表的主键是 city_id,一个名为 city_pm 的单独表保存 PM 点,并且您有两个模型 City 和 City_Pm.. .

在你看来:

cities = City.objects.all()

在你的模型中:

class City(models.Model):
    # fields ...

    def get_latest_pm(self):
        try:
            return City_Pm.objects.filter(city_id=self.pk).order_by("-date")[:1].get()
        except:
            return None

在你的模板中:

{% for city in cities %}
    {{ city.get_latest_pm }}
{% endfor %}

关于mysql - 如何使用 Django 的 ORM 创建临时表以按两个条件对同一列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16162611/

相关文章:

python - 在 Django 应用程序中存储大数据的更好选择

python - 确定 M2M 字段是否具有自定义直通模型

php - 除了 ping 之外,保持 mysql 连接事件的更好方法

mysql - SQL:如何使用 DISTINCT 保持行顺序?

django - 如何使用 url 修复 django 'django.core.exceptions.ImproperlyConfigured' 的错误?

python - pisa django将汉字显示为黑色 block

python - 在 Python (Django) 中将一个函数调用到另一个函数中

mysql - 在单个 MySQL 列中分隔标签

php - 如何确保在检查时该值仅保存到表中一次?

PHP 包含 mysql 查询,使用 header 来防止查询重新执行,但是在哪里回显通知?