Sql поиск дубликатов: Как найти дубликаты в SQL выборке?
Как найти дубликаты в SQL выборке?
Вы здесь:
Главная — MySQL — SQL — Как найти дубликаты в SQL выборке?
Время от времени возникает такая задача как поиск дубликатов в выборке в SQL.
Добиться этого можно следующим образом.
Допустим у нас есть некая таблица со значениями, которые могут повторяться.
Тогда делаем следующее:
-- выбираем значение и считаем сколько раз такое значение всречается в таблице
SELECT
value, COUNT(value)
FROM
table
-- группируем выборку по значению
GROUP BY
value
-- фильтруем выборку по количеству
HAVING
COUNT(value) > 1
Вот так можно найти дупликаты в выборке с помощью SQL.
-
Создано 20.08.2019 10:59:59 -
Михаил Русаков
Предыдущая статья Следующая статья
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
-
Кнопка:
<a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>Она выглядит вот так:
-
Текстовая ссылка:
<a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
[URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]
как выбрать все дубликаты талицы SQL запросом
← →
Роман
(2009-01-29 10:52)
[0]
как выбрать все дубликаты талицы SQL запросом ?
что б не число дубликатов а дубликаты все выходили !
пример
НЕ
ИВАНОВ ИВАН ИВАНОВИЧ 2
а так
ИВАНОВ ИВАН ИВАНОВИЧ
ИВАНОВ ИВАН ИВАНОВИЧ
Сделать
← →
Ega23 ©
(2009-01-29 11:04)
[1]
select aName, Count(aName) as Count
from Table
group by aName
having count(aName)>1
← →
Johnmen ©
(2009-01-29 11:05)
[2]
SELECT T1.F, T1.I, T1.O FROM Table T1
GROUP BY T1.F, T1.I, T1.O
HAVING COUNT(*)>1
← →
Anatoly Podgoretsky ©
(2009-01-29 11:32)
[3]
> Ega23 (29.01.2009 11:04:01) [1]
Это не даст результата, тут надо громоздить с вложеными запросами.
Ему надо не по одной строчке, как в группирование, а все, но только в том случае если дубли.
Видимо плохо спроектирована таблица, и теперь он пытается удалить лишнее.
← →
Johnmen ©
(2009-01-29 11:34)
[4]
> Anatoly Podgoretsky © (29.01.09 11:32) [3]
> Ему надо не по одной строчке, как в группирование, а все, но только в том случае если дубли.
Нам он этого не говорил 🙂
← →
Ega23 ©
(2009-01-29 11:35)
[5]
> Ему надо не по одной строчке, как в группирование, а все,
> но только в том случае если дубли.
Снимаю шляпу перед твоим телепатором.
← →
Кщд
(2009-01-29 11:39)
[6]
>Johnmen © (29.01.09 11:34) [4]
он это ясно сказал: «что б не число дубликатов а дубликаты все выходили !»
да ещё и с примером)
← →
Johnmen ©
(2009-01-29 11:48)
[7]
> Кщд (29.01.09 11:39) [6]
Что именно он сказал ясно? Дубликаты чего?
← →
Anatoly Podgoretsky ©
(2009-01-29 12:07)
[8]
> Ega23 (29.01.2009 11:35:05) [5]
Он привел два примера, то чего он не хочет и наоборот.
← →
Роман
(2009-01-29 12:14)
[9]
ЕСть таблица допустим 1.dbf
мне нужены к ней запросы по выявлению двойных записей и еще кое что
Вот пробую по разному и ищу тоже везде только одна строка выходит
допустим ИВАНОВ ИВАН ИВАНОВИЧ и количтво например 5
а мне на до чтобы выхолило
ИВАНОВ ИВАН ИВАНОВИЧ
ИВАНОВ ИВАН ИВАНОВИЧ
ИВАНОВ ИВАН ИВАНОВИЧ
ИВАНОВ ИВАН ИВАНОВИЧ
ИВАНОВ ИВАН ИВАНОВИЧ
← →
Sergey13 ©
(2009-01-29 12:20)
[10]
> [9] Роман (29.01.09 12:14)
Я внесу свою лепту телепатирования.
Подозреваю, что в таблице есть и другие поля, которые НЕ повторяются. Если они тебе нужны и ты их просто не написал в примере, то приведенные запросы не сработают или сработают неправильно. Если других полей нет, то в топку такую таблицу.
← →
Кщд
(2009-01-29 12:26)
[11]
>Johnmen © (29.01.09 11:48) [7]
>Что именно он сказал ясно? Дубликаты чего?
дубликаты ФИО (одно это поле или несколько здесь не суть)
и его пример ясно показал, что group by его не устраивает
однако, и ответ (1), и ответ (2) его содержат
и после этого автора обвинили в том, что он «прячет и утаивает»)
не первый раз замечаю такое поведение здесь от уважаемых мной людей(в частности, Вас)
прошу прощения, что вырвалось)
впрочем, это оффтоп — молчу-молчу)
← →
Роман
(2009-01-29 12:51)
[12]
:)))
← →
Ega23 ©
(2009-01-29 13:02)
[13]
> мне нужены к ней запросы по выявлению двойных записей
В [1] и [2] тебе ответили.
Если тебя это чем-то не устраивает, то у тебя уже есть начальный инструментарий для дальнейшего наращивания запроса. Например
Select * from Table
where FIO in (см. запрос [2])
И потом, как ты будешь решать, кто из них реальная запись, а кто — дубликат (правда это уже твои проблемы).
> дубликаты ФИО (одно это поле или несколько здесь не суть)
Суть, и очень существенная. Потому что неизвестно, что есть первичный ключ. Потому как если PK не вот это вот самое ФИО, то тогда это никакие не дубликаты а вполне себе самостоятельные сущности.
> и его пример ясно показал, что group by его не устраивает
Ясно только одно, что он чуть-чуть подумать не хочет.
← →
Роман
(2009-01-29 13:14)
[14]
>>> В [1] и [2] тебе ответили.
Эти ответы я еще 2 дня назад
мне нужно что бы выполнял другие задачи Если б знал то у МАСТЕРОВ БЫ НЕ СПРАШИВАЛ
← →
Ega23 ©
(2009-01-29 13:23)
[15]
> мне нужно что бы выполнял другие задачи Если б знал то
> у МАСТЕРОВ БЫ НЕ СПРАШИВАЛ
Ну ты в своём праве…
← →
Sergey13 ©
(2009-01-29 13:30)
[16]
> [14] Роман (29.01.09 13:14)
Ну так другие то поля в таблице есть? Они то же повторяются?
← →
Кщд
(2009-01-29 13:42)
[17]
>Ega23 © (29.01.09 13:02) [13]
>Суть, и очень существенная. Потому что неизвестно, что есть первичный >ключ. Потому как если PK не вот это вот самое ФИО, то тогда это никакие не >дубликаты а вполне себе самостоятельные сущности.
простите, а какая, собственно, разница «самостоятельная» эта сущность, али нет, если мне необходимо получить дубликаты по полю(или кортежу)? 🙂
>Роман (29.01.09 13:14) [14]
структуру таблицы-то обнажите?
← →
Роман
(2009-01-29 13:44)
[18]
Повторяться поля F I O god
Остальные не повторяются rt ft ko se rf guyu fft sss
← →
Кщд
(2009-01-29 14:02)
[19]
>Роман (29.01.09 13:44) [18]
см. Ega23 © (29.01.09 13:02) [13]
← →
Кщд
(2009-01-29 14:04)
[20]
>Ega23 © (29.01.09 13:02) [13]
>Ясно только одно, что он чуть-чуть подумать не хочет.
человек просто не знает SQL
← →
Ega23 ©
(2009-01-29 14:05)
[21]
> простите, а какая, собственно, разница «самостоятельная»
> эта сущность, али нет, если мне необходимо получить дубликаты
> по полю(или кортежу)? 🙂
Есть разница. Какая из этих сущностей «главнее»? Какую будем оставлять, а какую — выкидывать?
← →
Ega23 ©
(2009-01-29 14:06)
[22]
> человек просто не знает SQL
Судя по тому, что он пишет что знает про group by having count>1
….
← →
AndreyV ©
(2009-01-29 14:19)
[23]
> [21] Ega23 © (29.01.09 14:05)
> Есть разница. Какая из этих сущностей «главнее»? Какую будем
> оставлять, а какую — выкидывать?
Может автор не хочет выкидывать, а делает проверку на предмет визуального контроля ошибок ввода: тёзка или оператор накосячил.
← →
Johnmen ©
(2009-01-29 14:24)
[24]
> Кщд (29.01.09 12:26) [11]
Мне очень странно твоё возмущение на ровном месте. Ибо автор к моменту поста [6] НИКАКОЙ ясности про дубликаты НЕ ОБОЗНАЧИЛ, как и НЕ ОБОЗНАЧИЛ того, что есть «его пример», и то, что «group by его не устраивает»…
← →
Кщд
(2009-01-29 14:25)
[25]
>Ega23 © (29.01.09 14:05) [21]
>Какую будем оставлять, а какую — выкидывать?
удаление дубликатов — совсем другой коленкор)
но, как-будто, автор хотел посмотреть, а не удалить…
← →
Ega23 ©
(2009-01-29 14:27)
[26]
> Может автор не хочет выкидывать, а делает проверку на предмет
> визуального контроля ошибок ввода: тёзка или оператор накосячил.
А как ты это определишь, не зная больше ничего про эту таблицу.
З.Ы. Было дело, делал «Бюро пропусков». В базе было ~ 15000 народу. Повторений по ФИО было ну не то чтобы дофига, но были.
Но люди-то — разные!
← →
Роман
(2009-01-29 14:28)
[27]
Абсолютно нет ризницы какие поля если Вы приведете пример с вымышленными полями я и на этом буду благодарен
Мой код SQL такой
select <поле>,count(*) from table group by <поле> having count(*) > 1
Для меня он не подходит так как выводит одно повторяющеюся строку и сумму сколько их ,
мне нужно чтоб сколько были столько и выходили
SQL изучаю но еще плохо знаю
← →
AndreyV ©
(2009-01-29 14:29)
[28]
> [23] AndreyV © (29.01.09 14:19)
Впрочем, какая-то уникальность записи должна быть, иначе действительно в топку такую таблицу.
← →
AndreyV ©
(2009-01-29 14:30)
[29]
> [26] Ega23 © (29.01.09 14:27)
> А как ты это определишь, не зная больше ничего про эту таблицу.
> Но люди-то — разные!
Уже ответил.
← →
Виталий Панасенко
(2009-01-29 14:33)
[30]
select <поле> from table where <поле> in (
select <поле> from table group by <поле> having count(*) > 1)
← →
Роман
(2009-01-29 14:45)
[31]
Спасибо всем буду пробовать
← →
Кщд
(2009-01-29 14:49)
[32]
>AndreyV © (29.01.09 14:29) [28]
>Впрочем, какая-то уникальность записи должна быть, иначе >действительно в топку такую таблицу.
да-да
для поиска дубликатов в табличке без UK и/или PK необходимо её(табличку, то бишь) вначале дропнуть — распространенная практика)
← →
Anatoly Podgoretsky ©
(2009-01-29 15:50)
[33]
Как обычно вместо объяснения задачи, для чего это нужно, автор обсуждает свое преставление ее решения.
Поиск одинаковых записей в MySQL
Иногда в базе данных бывает нужно подсчитать кол-во записей-дубликатов. Сделать это можно следующим способом:
SELECT * FROM table1 WHERE id IN (SELECT id FROM table1 GROUP BY id HAVING COUNT(*)>1)
Давайте поподробнее разберем этот запрос. Нам нужно выявить записи с одинаковыми id в таблице table1, для этого нужно сделать выборку в таблице table1 с условием IN:
SELECT * FROM table1 WHERE id IN
что буквально означает «выбрать все из table1 где поле id равно диапазону значений». Последнее слово IN означает, что поле id должно быть равно не просто определенному значению, а соответствовать нескольким значениям, которые указываются в скобках после него. В нашем случае, в скобках после оператора IN указан подзапрос, который и возвращает все дублирующиеся id.
(SELECT id FROM table1 GROUP BY id HAVING COUNT(*)>1)
Как было сказано ранее, этот запрос возвращает значения id, которые повторяются более одного раза. «Выбрать id из table1, сгруппировать их и выбрать те, количество которых после группировки больше 1». Происходит группировка по полю id, и в мы как раз можем подсчитать кол-во «сгруппировавшихся» id-шников, т. е. количество одинаковых id. Так как группировка происходит по одному полю — id, то все одинаковые значения id будут сгруппированы в одно, то есть, например, у нас есть 3 айдишника со значением «1», еще 4 айди со значением «2», то есть всего 7 айдишников. В результате 3 айдишника сгруппируются в один, а еще 4 айдишника со значением «2» тоже сгруппируются в отдельную запись, и в результате после группировки мы получим два айдишника вместо 7-ми со значениями «1» и «2». С помощью оператора having и функции count мы можем посчитать кол-во сгруппированных id-шников, и если кол-во сгруппировавшихся id-шников больше 1, то мы учитываем их при выборке (т. е. учитываем их в операторе IN), например, из подзапроса мы узнали, что id-дубликаты — это 1 и 2. В основном запросе мы в итоге получим:
SELECT * FROM table1 WHERE id IN(1,2)
Бывает, что нужно найти записи, которые повторяются не по одному, а по нескольким полям. Допустим у нас есть таблица info с полями name и surname (имя и фамилия), нам нужно найти записи с двумя повторяющимися полями (name и surname). Для этого нам поможет оператор MySQL «CONCAT»:
SELECT * FROM info WHERE CONCAT( `info`.`name` , `info`.`surname` ) IN ( SELECT CONCAT( `info`.`name` , `info`.`surname` ) AS name2 FROM `info` GROUP BY name2 HAVING COUNT( name2 ) >1 )
Способы удаления дубликатов в SQL Server — Разработка на vc.ru
При проектировании объектов, в частности таблиц в БД SQL Server, необходимо придерживаться определенных правил. Однако, даже если следовать данным правилам существует вероятность появления дубликатов в строках таблиц. Данная статья посвящена различным способам очистки данных от дубликатов.
При проектировании объектов, в частности таблиц в БД SQL Server необходимо придерживаться определенных правил: рекомендуется использовать правила нормализации БД; таблица должна иметь первичные ключи, кластерные и некластерные индексы; ограничения для обеспечения целостности данных и производительности. Но даже если следовать этим правилам, мы можем столкнуться с проблемой появления дубликатов в строках таблицы. Кроме этого, возможна ситуация получения дубликатов при импорте данных, когда мы загружаем данные as is в промежуточные таблицы, и далее требуется удалить дублирующие записи перед загрузкой в промышленные таблицы.
Рассмотрим различные способы для очистки данных от дублей. Создадим простую таблицу сотрудников и наполним её несколькими записями.
CREATE TABLE Employee
(
[id] int identity(1,1),
[Фамилия] nvarchar(100),
[Имя] nvarchar(100),
[Отчество] nvarchar(100),
[Дата рождения] date,
)
GO
Insert into Employee ([Фамилия],[Имя],[Отчество],[Дата рождения])
values
(N’Алексеев’,N’Алексей’,N’Алексеевич’,’1990-03-01′),
(N’Алексеев’,N’Алексей’,N’Алексеевич’,’1990-03-01′),
(N’Алексеев’,N’Алексей’,N’Алексеевич’,’1990-03-01′)
(N’Иванов’,N’Иван’,N’Иванович’,’1985-01-01′),
(N’Иванов’,N’Иван’,N’Иванович’,’1985-01-01′),
(N’Петров’,N’Петр’,N’Петрович’,’1988-02-01′),
Как мы видим, в таблице присутствуют дублирующие строки, которые необходимо удалить.
- Удаление дубликатов с использованием агрегатных функций
C помощью условия GROUP BY мы группируем данные по определенным столбцам и используем функцию COUNT для подсчета вхождений строк в таблицу.
Например, с помощью следующего запроса, определим записи, которые присутствуют в таблице более 1 раза.
Select [Фамилия], [Имя], [Отчество], [Дата рождения], count(*) as CNT
FROM NTA.dbo.Employee
GROUP BY [Фамилия], [Имя], [Отчество], [Дата рождения]
having count(*) > 1
Т.е. сотрудники Алексеев А.А. и Иванов И.И. присутствуют в таблице 3 и 2 раза соответственно.
Удалим дублирующие записи, оставив только строки с MIN id сотрудника.
Delete FROM NTA.dbo.Employee
Where id not in
(
select min(id) as MinRowID
FROM NTA.dbo.Employee
group by [Фамилия],[Имя],[Отчество],[Дата рождения]
)
Простой поиск дубликатов записей в таблицах (на примере Access)
Обычно меры, предотвращающие появление нежелательных дубликатов имеющихся записей в таблицах, принимаются заранее. Но, не всегда они бывают достаточно эффективны и не всегда нужные действия принимаются своевременно.
В этой статье мы рассмотрим простой поиска дубликатов. В качестве примера используем СУБД Access.
Допустим у нас имеется таблица «Товары», которой хранится название товара и его цена. При этом один и тот же товар не может продаваться по разным ценам. Но, если мы посмотрим на скриншот для таких товаров, как хлеб и макароны существует 3 и 2 варианта цены соответственно, хотя по постановке задачи этого быть не должно.
Лирическое отступление
По-хорошему, при создании таблицы нужно было добавить уникальный индекс для поля «Название», но это сделано не было.
Сейчас это сделать пока невозможно, т.к. добавление уникального индекса для поля с неуникальными записями вызовет ошибку и такой индекс не будет добавлен.
Поэтому перед добавлением индекса нужно найти и затем удалить не нужные дубликаты.
Сразу отметим, что дубликаты могут быть полными (совпадают все поля, кроме первичного ключа (id)) или частичными (совпадает только часть полей). В нашем примере мы имеет дело с последними.
Для поиска любых дубликатов мы можем воспользоваться одним простым способом. Это запрос с группировкой для подсчёта количества записей при помощи функции count и отбором записей количество которых составляет 2 и более.
В нашем случае требуется найти дубликаты по полю «Название» и потому данный запрос будет выглядеть следующим образом.
SELECT Название, COUNT(Код) AS Дубликатов FROM Товары GROUP BY Название HAVING COUNT(Код) >=2;
| SELECT Название, COUNT(Код) AS Дубликатов FROM Товары GROUP BY Название HAVING COUNT(Код) >=2; |
Результат его выполнения:
Если при поиске дубликатов нужно учитывать несколько полей, то они добавляются в предложения SELECT и GROUP BY как показано ниже.
SELECT Артикул, Название, Категория, COUNT(Код) AS Дубликатов FROM Товары GROUP BY Артикул, Название, Категория HAVING COUNT(Код) >=2;
| SELECT Артикул, Название, Категория, COUNT(Код) AS Дубликатов FROM Товары GROUP BY Артикул, Название, Категория HAVING COUNT(Код) >=2; |
Отличительной чертой метода рассматриваемого в данной статье является его универсальность, т.к. в нём используется стандартный функционал SQL, который позволяет не только искать почти любые дубликаты, но применять его в любой реляционной СУБД.
Руководство по SQL. Обработка дубликатов. – PROSELYTE
В ходе разработки мы можем столкнуться с ситуацией, когда у нас в таблице есть записи с одинаковыми значениями. И нам может понадобиться получиться только уникальные значения.
Для этих целей в языке SQL используется ключевое слово DISTINCT. Данная запрос используется вместе с командой SELECT для получения уникальных значений из таблицы и имеет следующий вид:
SELECT DISTINCT колонка1, колонка2 ... колонкаN
FROM имя_таблицы
WHERE [условие]
Пример:
Предположим, что у нас есть таблица developers, которая содержит следующие записи:
+----+-------------------+-----------+------------+--------+
| ID | NAME | SPECIALTY | EXPERIENCE | SALARY |
+----+-------------------+-----------+------------+--------+
| 1 | Eugene Suleimanov | Java | 2 | 2500 |
| 2 | Peter Romanenko | Java | 3 | 3500 |
| 3 | Andrei Komarov | C++ | 3 | 2500 |
| 4 | Konstantin Geiko | C# | 2 | 2000 |
| 5 | Asya Suleimanova | UI/UX | 2 | 1800 |
| 6 | Ludmila Geiko | UI/UX | 2 | 1800 |
| 7 | Ivan Ivanov | C# | 1 | 900 |
+----+-------------------+-----------+------------+--------+
Допустим, что нам необходимо узнать записи разработчиков каких специальностей (Java, C++ и т.д.) хранятся у нас в таблице.
Мы можем попробовать выполнить следующий запрос:
mysql> SELECT SPECIALTY FROM developers;
В результате обработки данного запроса мы получим следующий результат:
+-----------+
| SPECIALTY |
+-----------+
| Java |
| Java |
| C++ |
| C# |
| UI/UX |
| UI/UX |
| C# |
+-----------+
Как видно, специальности повторяются и, если в нашей таблице будут храниться сотни тысяч записей, нам будет крайне затруднительно понять, какие именно специальности у нас есть.
Теперь попробуем выполнить следующий запрос:
mysql> SELECT DISTINCT SPECIALTY FROM developers;
В результате выполнения данного запрос мы получим следующий результат:
+-----------+
| SPECIALTY |
+-----------+
| Java |
| C++ |
| C# |
| UI/UX |
+-----------+
Как видно, записи не повторяются, т.е. мы получили только уникальные результаты.
На этом мы заканчиваем изучение способа обработки дубликатов в языке SQL.
В следующей статье мы рассмотрим инъекции (injections).
Как найти повторяющиеся записи в SQL — с DISTINCT ключевым словом и без него
В нашем последнем обсуждении мы видели операторов SQL . Сегодня мы увидим повторяющиеся записи в SQL. Здесь мы обсудим запрос на поиск повторяющихся строк в базе данных. Также мы увидим, как можно удалить повторяющиеся записи в SQL с ключевым словом DISTINCT и без него.
Итак, приступим к дублированию записей в SQL.
Как найти повторяющиеся записи в SQL — с DISTINCT ключевым словом и без него
1.Что такое повторяющиеся записи в SQL?
Когда нам нужно получить информацию из таблицы, в таблице должны быть дубликаты нескольких данных или записей. Таким образом, чтобы получить только уникальные записи и избежать получения повторяющихся записей, SQL использует определенные способы.
Первый использует ключевое слово DISTINCT, а второй — без ключевого слова DISTINCT.
2. Использование DISTINCT ключевого слова для удаления повторяющихся записей
Ключевое слово DISTINCT можно использовать с оператором select, чтобы удалить все повторяющиеся записи и получить только уникальные записи.
Синтаксис —
Базовый синтаксис ключевого слова DISTINCT для устранения повторяющейся записи —
ВЫБРАТЬ DISTINCT столбец1, столбец2, ..... столбецN FROM table_name ГДЕ [условие]
Рекомендуемая литература — Вопросы для собеседования с запросом SQL
Например,
Создадим таблицу с именем Worker
WORKER_ID | FIRST_NAME | LAST_NAME | ЗАРПЛАТА | JOINING_DATE | ОТДЕЛ |
001 | НИХАРИКА | ARORA | 20000 | 25.02.2013 09:00:00 | HR |
002 | АЮШИ | GURONDIA | 5000 | 10.02.2015 09:00:00 | ADMIN |
003 | ПРИЯНША | ЧАКИ | 25000 | 16.05.2014 09:00:00 | HR |
004 | APARNA | DESHPANDE | 8000 | 2016-12-20 09:00:00 | ADMIN |
005 | ШАФАЛИ | JAIN | 20000 | 2015-08-29 09:00:00 | ADMIN |
006 | СУХИТА | JOSHI | 20000 | 2017-02-12 09:00:00 | СЧЕТ |
007 | ШУБХИ | МИШРА | 25000 | 2018-03-23 09:00:00 | ADMIN |
008 | ДЕВЯНИ | ПАТИДАР | 18000 | 2014-05-02 09:00:00 | СЧЕТ |
Сначала мы будем использовать только запрос SELECT, который возвращает повторяющиеся записи о зарплате.
SQL> ВЫБРАТЬ ЗАРПЛАТУ ОТ КЛИЕНТОВ ЗАКАЗ ПО ЗАРПЛАТЕ;
Давайте обсудим Dynamic SQL
Это приведет к следующему результату, где зарплата 20000 и 25000 выплачивается дважды, что создает дублирующую запись.
5000
8000
18000
20000
20000
20000
25000
25000
Теперь мы будем использовать DISTINCT с запросом SELECT.
SQL> ВЫБРАТЬ ОТЛИЧНУЮ ЗАРПЛАТУ ОТ КЛИЕНТОВ ЗАКАЗ ПО ЗАРПЛАТЕ;
Результат
5000
8000
18000
20000
25000
3.Как удалить повторяющиеся записи SQL без DISTINCT ключевого слова?
Вы должны прочитать — Хранимые процедуры SQL
я. Удалите повторяющиеся записи в SQL с помощью Row_Number.
С CTE (Col1, Col2, Col3, DuplicateCount) КАК ( ВЫБЕРИТЕ Col1, Col2, Col3, ROW_NUMBER () OVER (РАЗДЕЛЕНИЕ ПО столбцу 1, столбцу 2, Col3 ORDER BY Col1) AS DuplicateCount ИЗ MyTable ) SELECT * from CTE, где DuplicateCount = 1
ii. Удаление повторяющихся записей в SQL с помощью самосоединения
YourTable
emp_name emp_address sex matial_status |
uuuu eee m s |
iiii iii f s |
uuuu eee m s |
ВЫБРАТЬ emp_name, emp_address, sex, marital_status из YourTable a ГДЕ НЕ СУЩЕСТВУЕТ (выберите 1 из YourTable b где b.emp_name = a.emp_name и b.emp_address = a.emp_address и b.sex = a.sex и b.create_date> = a.create_date)
iii. Удалить повторяющиеся записи в SQL с помощью группы по
ВЫБЕРИТЕ FirstName, LastName, MobileNo, COUNT (*) как CNT ОТ ЗАКАЗЧИКА ГРУППА ПО ФАМИЛИ, ФАМИЛИ, Мобил. ИМЕЕТ СЧЕТЧИК (*) = 1
4. Резюме
Следовательно, в этом руководстве мы изучили дубликатов SQL .Мы обсудили, как найти повторяющиеся строки SQL и как удалить повторяющиеся строки в SQL. Кроме того, мы обсудили запрос на поиск повторяющихся строк в таблице. Также мы видели использование DISTINCT Keyword в SQL.
Все-таки, если сомневаетесь, спрашивайте во вкладке комментариев.
Также проверьте —
Наиболее часто задаваемые вопросы на собеседовании по SQL
.
sql — Как найти повторяющиеся записи в таблице базы данных?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.