Я сделал таблицу, которая содержит:
sid| bid |date
---+-----+---------
31 | 102 |2002-05-09
31 | 103 |2002-05-09
31 | 104 |2002-09-22
22 | 101 |2002-10-10
22 | 102 |2002-10-10
22 | 103 |2003-01-10
64 | 101 |2003-01-11
64 | 102 |2003-01-11
22 | 104 |2003-02-10
74 | 103 |2003-02-12
Я хочу показать менее частый идентификатор, то есть 101 и 104. Я узнал, как делать наиболее частые, но как снимать наименее частые?
@SanSolo, это не дублирование этой ссылки, потому что OP хочет два значения идентификатора 101 и 104 (а не только 1 строку путем сортировки и ограничения 1), которые поступают в функцию RANK() или DENSE_RANK() (в других dbms). У MySql есть обходной путь для этого.






Может быть, я смогу сделать что-нибудь более оптимизированное, но вот оно
CREATE TABLE work (sid int,bid int,`date` datetime);
INSERT INTO work (sid,bid,date)
VALUES
(31,102,'2002-05-09'),
(31,103,'2002-05-09'),
(31,104,'2002-09-22'),
(22,101,'2002-10-10'),
(22,102,'2002-10-10'),
(22,103,'2003-01-10'),
(64,101,'2003-01-11'),
(64,102,'2003-01-11'),
(22,104,'2003-02-10'),
(74,103,'2003-02-12');
SELECT @min :=MIN(nr) FROM
(SELECT bid,count(*) as nr FROM work GROUP BY bid) a;
SELECT @min;
SELECT bid FROM (
SELECT bid,count(*) as nr FROM work GROUP BY bid HAVING count(*)=@min) a;
Что у вас есть чаще всего? Какая версия MySQL?