如何查找与某些其他记录共享相同字段值的所有记录?
问题描述:
我需要提取所有具有不具有唯一值的字段的记录。如何查找与某些其他记录共享相同字段值的所有记录?
我找不出一个优雅的方式来做到这一点 - 使用注释或其他方式。我向对象管理器看到了一个“value_annotate”方法,但不清楚它是否与之相关。
目前我使用的简单的通过所有值循环的不雅的方式,做一个得到的值,如果有这意味着它不是唯一的一个例外..
感谢
答
我可以”牛逼多讲Django的部分,但查询看起来是这样的:
SELECT *
FROM foo
WHERE id IN (
SELECT MAX(id)
FROM foo
GROUP BY bar
HAVING COUNT(*)=1)
这将返回所有记录在“酒吧”域是唯一的。
答
我会直接在这种情况下的原始查询。这会看起来像下面,假设你使用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