Идентификатор возврата MySQL с наименьшим количеством - PullRequest
0 голосов
/ 20 декабря 2011

Я пытаюсь получить идентификатор из таблицы на основе того, какой идентификатор имеет наименьшее количество записей, используя только один запрос. Можно ли сделать это всего за один запрос?

Например:

----------------------
|   ID   | Article_ID|
----------------------
|    1   |      7    |
----------------------
|    1   |      3    |
----------------------
|    1   |      4    |
----------------------
|    2   |      5    |
----------------------

Я бы хотел, чтобы он возвращал «2» для идентификатора «2», потому что он имеет только 1 счет против идентификатора 1, который имеет 3 счета.

Я знаю, что мог бы добиться этого, сначала запустив запрос, чтобы получить список всех идентификаторов, а затем выполнив цикл для подсчета каждого идентификатора, а затем, наконец, сравнив их, но я хотел знать, возможно ли это сделать вместо этого все это в одном запросе.

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Считать первую строку из следующего курсора:

select id from (
  select id, count(id) as c 
    from <table name> group by id 
) as x order by c limit 1
0 голосов
/ 20 декабря 2011

Мой любимый способ получения этих данных - использование самостоятельного соединения (у меня может быть оператор <назад, я его не проверял. </p>

SELECT t1.ID, t1.Article_ID
FROM table t1
    LEFT JOIN table t2 ON t1.id = t2.id AND t1.article_id < t2.article_id
WHERE t2.id is null

Это будет возвращено из запроса, в случае, если это полезно, даже если оно не совсем отвечает на вопрос.

-------------------
| ID | Article_ID |
-------------------
| 1  | 3          |
-------------------
| 2  | 5          |
-------------------
...