Напротив отличия в MySQL
Я хотел бы знать, есть ли противоположность "select different" в sql, так что я могу использовать для получения значений из таблицы, которая повторялась несколько раз.
Спасибо
Ответы
Ответ 1
select some_column, count(*)
from some_table
group by 1
having count(*) > 1;
В таких базах данных, как mysql, вы можете даже опустить выбор count(*)
, чтобы оставить только значения столбца:
select some_column
from some_table
group by 1
having count(*) > 1;
Ответ 2
Вам нужно group by
с предложением having
, например:
select person, count(friends)
from people
group by person
having count(friends) > 1
Это даст вам список всех людей и их друзей, за исключением тех бедных печальных подошв, к которым подружились только их матери или, что еще хуже, даже их матери: -)
В этом случае вы должны использовать having
вместо where
, поскольку первые фильтры после группировки, пока последний фильтрует раньше, и у вас нет информации о совокупных функциях, таких как count()
, до тех пор, пока группировка не будет состоялось.
Ответ 3
Я искал что-то подобное для ситуации со многими для многих, где я хочу показать, сколько дубликатов существует в обеих таблицах. count (col col) было не совсем правильным решением, потому что результат "1" показал, что столбец действительно имеет дубликаты, но не сказал, сколько. "Против отличия", который я использовал для этого, была инверсия, использующая count (*): (count (*) - count (col col) +1), и она отлично справилась.