sql - Django 。数据库查询: distinct for one field

标签 sql django django-models django-queryset django-mssql

我在数据库中有以下字段和数据:

FirstName     LastName    Date

John          Davis       10-10-2011
Joe           Gray        20-09-2011
Ann           Davis       03-04-2010
Ann           Bovis       01-04-2010

如何从具有最新日期和唯一姓氏的 DB 3 项目中进行选择,并在结果中包含所有其他字段。这意味着,如果结果中有多个带有 LastName Davis 的项目,则应该只有一个具有最新日期的项目。 甚至不知道如何在纯 SQL 上做到这一点 - Django 看起来根本不可能。

编辑1。 SQL 查询。

我在纯 SQL 上编写了查询:

SELECT TOP 3 *
FROM peopleTable as a1
WHERE  (select count(*)FROM peopleTable as a2 where a2.LastName=a1.LastName and a2.Date > a1.Date)<=0
ORDER by Date desc

我想如果我在 django 中像纯 SQL 一样使用这个查询会更好。

最佳答案

你可以这样做:

latest date and unique last name

all other fields

但你不能两者兼得。如果您想获取姓氏 Davis 的最新日期,还应检索哪些其他字段,firstname=John 还是firstname=Ann?

猜测您希望结果如下所示:

FirstName     LastName    Date

John          Davis       10-10-2011
Joe           Gray        20-09-2011
Ann           Bovis       01-04-2010

安·戴维斯 (Ann Davis) 行已消失,因为她不是表中最新的戴维斯。对吗?

在这种情况下,你的原始 SQL 看起来像:

SELECT FirstName, LastName, Date
FROM
Table T1
WHERE
NOT EXISTS (
SELECT * FROM Table T2 WHERE T2.LastName=T1.LastName AND T2.Date > T1.Date
)

您可以使用 Item.objects.raw() 在 Django 中编写该内容选项。您还可以使用extra(where=…)

关于sql - Django 。数据库查询: distinct for one field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8052891/

相关文章:

python - 在 Get/Filter 中检查 Django ORM 中是否存在对象的更好方法?

Django,按字符串过滤比 SQL 关系更快吗?

sql - 在MYSQL中,如何选择多行并按我指定的顺序返回?

python - 如何提高 django 管理站点上数据库中可视化数据的性能?

python - Django View 中的嵌套 SQL 查询

python - django - 从一个文件调用函数到另一个文件

sql - 如何选取n组所有记录?

sql - 没有系统管理员权限的 OpenRowSet 和 OpenDataSet

sql - 简单的 UPDATE 和 DELETE 语句可以触发 PostgreSQL 中的死锁和回滚吗?

django - 无法在 __init__.py django 1.9.4 中导入模型