Как найти все записи, которые имеют то же значение поля, что и некоторые другие записи? - PullRequest
0 голосов
/ 13 июня 2010

Мне нужно извлечь все записи, у которых есть поле, которое НЕ имеет уникального значения.

Я не могу найти элегантный способ сделать это - с помощью аннотации или каким-либо другим способом.Я вижу метод "value_annotate" для менеджера объектов, но неясно, связан ли он вообще.

В настоящее время я использую не элегантный способ простого обхода всех значений и получения значения, и еслиесть исключение, это означает, что он не уникален ..

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 июня 2010

Я бы пошел прямо к необработанному запросу в этом случае. Это будет выглядеть примерно так, если вы используете Django 1.2:

query = """
SELECT *
FROM table
GROUP BY field
HAVING COUNT(*) > 1
"""
non_uniques = Table.objects.raw(query)

Для более ранних версий, чем 1.2, см. документы django по необработанным запросам

0 голосов
/ 13 июня 2010

Я не могу много сказать о части Django, но запрос будет выглядеть примерно так:

SELECT * 
FROM foo
WHERE id IN (
  SELECT MAX(id) 
  FROM foo 
  GROUP BY bar 
  HAVING COUNT(*)=1)

Это вернет все записи, где поле "bar" уникально.

...