2011-12-20 2 views
0

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

Например:

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

Я хотел бы его вернуть "2" для ID "2", потому что он имеет только 1 количество по сравнению с идентификатором 1, который имеет 3 счета.

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

ответ

1

Прочитайте первую строку из следующего курсора:.

select id from (
    select id, count(id) as c 
    from <table name> group by id 
) as x order by c limit 1 
+0

добавьте предложение «limit 1» в конце, и вы получили его – tato

+0

Спасибо, я не очень хорошо знаком с синтаксисом mysql. Я в основном работаю с Oracle. –

+0

Клас, спасибо за помощь - я попытался следующие, но получил ошибку: выберите идентификатор из ( выберите ид, COUNT (ID) с из authors_article группы по идентификатору ) порядка на с лимитом 1 Ошибка: Каждый полученный таблица должна иметь свой собственный псевдоним –

0

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

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   | 
------------------- 
+0

Не то, о чем он просит. Будет работать только в том случае, если самый низкий счет равен 1 –

+0

. Ваше право. Я должен прочитать его чуть ближе. Не думал, что это будет просто вопрос. – xecaps12

Смежные вопросы