Как выбрать уникальные записи по SQL
когда я выполняю "SELECT * FROM table" я получил результаты, как показано ниже:
1 item1 data1
2 item1 data2
3 item2 data3
4 item3 data4
Как вы можете видеть, есть DUP записи из column2 (item1 дублируются). Так как же я мог просто получить такой результат:
1 item1 data1
2 item2 data3
3 item3 data4
из дубликата возвращается только одна запись вместе с остальными уникальными записями.
7 ответов:
можно использовать
SELECT DISTINCT
илиGROUP BY
для этого.SELECT DISTINCT a, c FROM table_c
или
SELECT a, b FROM table_c GROUP BY a, b
GROUP BY
будет более полезно, если вы хотите использовать некоторые статистические функции, такие какCOUNT()
илиSUM()
SELECT a, b, count(*) FROM table_c GROUP BY a, b SELECT a, b, sum(d) FROM table_c GROUP BY a, b
Если вам нужно только удалить дубликаты, то используйте
DISTINCT
.GROUP BY
должен использоваться для применения агрегатных операторов к каждой группе
Это зависит от того, какую строку вы хотите вернуть для каждого уникального элемента. Ваши данные, похоже, указывают минимальное значение данных, поэтому в этом экземпляре для SQL Server.
SELECT item, min(data) FROM table GROUP BY item
Я считаю, что если я не могу использовать DISTINCT по какой-либо причине, то GROUP BY будет работать.
чтобы получить все столбцы в вашем результате вам нужно разместить что-то вроде:
SELECT distinct a, Table.* FROM Table
это место a как первый столбец, так и остальные будут все столбцы в том же порядке, что и ваше определение. Это, колонка a будет повторяться.
просто используйте внутреннее соединение, потому что group by не будет работать с несколькими столбцами, не содержащимися ни в одной агрегатной функции.
SELECT a.* FROM yourtable a INNER JOIN (SELECT yourcolumn, MIN(id) as id FROM yourtable GROUP BY yourcolumn ) AS b ON a.yourcolumn= b.yourcolumn AND a.id = b.id;