Напишите запрос SQL, который выбирает минимальное значение Customer для каждого идентификатора.Присоедините этот набор данных к исходной таблице, где значение Customer в исходной таблице превышает минимальное значение для каждого соответствующего идентификатора.Вот пример SQLFiddle:
http://www.sqlfiddle.com/#!9/93296f/20
Вот DDL, использованный для воссоздания вашего вопроса:
CREATE TABLE Table1
(`Id` int, `Customer_Account` int, `City` varchar(9));
INSERT INTO Table1
(`Id`, `Customer_Account`, `City`)
VALUES
(1, 123, 'London'),
(1, 123, 'Paris'),
(1, 456, 'Paris'),
(1, 456, 'Mumbai'),
(1, 123, 'Mumbai'),
(1, 789, 'Singapore');
Вот DML, используемый для отображения дубликата CustomerСчета.Запрос 3 должен дать вам окончательные результаты.
-- Query 1: Find the First Account for each Customer
select `Id`,
min(`Customer_Account`) as 'First Account by Customer'
from Table1 group by `Id`;
-- Query 2: Find the First Account for Each Customer by City
select `Id`,
min(`Customer_Account`) as 'First Account by City',
`City`
from Table1
group by `Id`, `City`;
-- Query 3: Find the Duplicate Customer Accounts by ID
select distinct
A.Id,
A.Customer_Account as 'Duplicate Account by Customer',
FirstAcctList.First_Account
from Table1 A
join (
select
`Id`,
min(`Customer_Account`) as 'First_Account'
from Table1 group by `Id`) as FirstAcctList
on FirstAcctList.First_Account <> A.Customer_Account;