Я ищу для создания отчета, где мне нужно сравнивать записи из таблицы mysql на основе столбца источника, а когда записи имеют разные значения, кроме исходного столбца, отображаются разные записи и статус.
Например, учитывая следующую таблицу: Необработанные значения
Мы получим следующий результат:
Джо показан потому, что для записей разных источников дают разные супруги. Боб и Марк не показаны, потому что оба источника имеют для него одинаковые данные. Эрнест показан, потому что только один источник имеет свою информацию.
Чтобы найти записи, которые существуют в одном источнике, но не находятся в другом, кажется довольно простым, что-то вроде:
SELECT 'New' as 'Status', f.* FROM (select * from tbl where tbl.Source='facebook') where 'Name' not in (SELECT 'Name' FROM select * from tbl where tbl.Source='linkedin')
Но я немного потерял, как найти записи, которые отличаются друг от друга.
Благодарю.
Идентифицируйте имена, которые имеют разные значения работы или супруга в другом источнике. Используйте UNION ALL
чтобы объединить их с новыми именами, которые публикуются только в одном источнике.
select
'Different' status,
t1.name,
t1.job,
t1.spouse,
t1.source
FROM
tbl t1
WHERE
EXISTS (SELECT 1 FROM tbl t2 WHERE t2.name = t1.name AND t2.source <> t1.source AND
(t2.job <> t1.job OR t2.spouse <> t1.spouse ))
UNION ALL
SELECT
'New',
name,
job,
spouse,
source
FROM tbl t1
WHERE NOT EXISTS (SELECT 1 FROM tbl t2 WHERE t2.name = t1.name
AND t2.source <> t1.source );