Напротив отличия в 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), и она отлично справилась.