我需要提取所有具有不具有唯一值的字段的记录。
我无法找到一种优雅的方式 - 使用注释或其他方式。我向对象管理器看到了一个“value_annotate”方法,但目前还不清楚它是否完全相关。
目前,我正在使用简单循环遍历所有值的不优雅方式并获取值,如果存在异常,则表示它不是唯一的..
由于
答案 0 :(得分:0)
我不能多说Django部分,但查询看起来像:
SELECT *
FROM foo
WHERE id IN (
SELECT MAX(id)
FROM foo
GROUP BY bar
HAVING COUNT(*)=1)
这将返回“bar”字段唯一的所有记录。
答案 1 :(得分:0)
在这种情况下,我会直接转到原始查询。假设您正在使用Django 1.2,这将看起来像下面这样:
query = """
SELECT *
FROM table
GROUP BY field
HAVING COUNT(*) > 1
"""
non_uniques = Table.objects.raw(query)
如果早于1.2,请参阅the django docs on raw queries