Я получаю три разных набора данных (или то, что должно быть «уникальными» строками). В общей сложности я ожидаю 3 разных уникальных набора строк, потому что мне нужно выполнять разные операции с каждым набором данных. Я, однако, получаю больше строк, чем их общее количество в таблице, что означает, что я должен где-то извлекать повторяющиеся строки. Вот пример моих трех наборов запросов:
SELECT DISTINCT t1.*
FROM table1 t1
INNER JOIN table2 t2
ON t2.ID = t1.ID
AND t2.NAME = t1.NAME
AND t2.ADDRESS <> t1.ADDRESS
SELECT DISTINCT t1.*
FROM table1 t1
INNER JOIN table2 t2
ON t2.ID = t1.ID
AND t2.NAME <> t1.NAME
AND t2.ADDRESS <> t1.ADDRESS
SELECT DISTINCT t1.*
FROM table1 t1
INNER JOIN table2 t2
ON t2.ID <> t1.ID
AND t2.NAME = t1.NAME
AND t2.ADDRESS <> t1.ADDRESS
Как видите, я выбираю (в порядке запросов)
- Набор данных, где идентификатор и имя совпадают
- Набор данных, где идентификатор совпадает, но имя НЕ
- Набор данных, где идентификатор не совпадает, но имя DOES
Я получаю больше строк, чем существует в T1, когда складываю количество результатов, возвращаемых по всем трем запросам, что я не считаю логически возможным, плюс это означает, что я должен где-то дублировать строки (если это возможно логически) что мешает мне выполнять разные команды для каждого набора (так как в строке будет выполняться другая команда).
Может кто-нибудь найти, где я иду не так?