У меня есть два столбца, которые могут использоваться в качестве уникальных идентификаторов пользователя: например, SSN и электронная почта. Мне нужно GROUP BY
всех пользователей, которые могут быть объединены одним из этих столбцов.
id | name | ssn | email
1 John 123 john@test.com
2 Doe 123 john.doe@test.com
3 Mr NULL john.doe@test.com
Все вышеперечисленные строки в основном для одного и того же пользователя. ID # 1 и # 2 имеют одинаковый столбец ssn
. ID № 2 и № 3 имеют одинаковые email
. Так ID № 1 и № 3 одинаковы. Переходное отношение.
Если я использую что-то вроде GROUP BY ssn, email
, это на самом деле не будет работать.
Что я ожидаю:
Предположим, что я делаю что-то вроде:
SELECT
GROUP_CONCAT(users.id) AS ids,
GROUP_CONCAT(DISTINCT users.email) AS emails_used_by_user
FROM users
GROUP BY TRANSITIVE(ssn, email) # Example
Возвращает одну строку, например:
ids | emails_used_by_user
1,2,3 john@test.com,john.doe@test.com
Поскольку идентификаторы # 1, # 2 и # 3 являются одним и тем же пользователем, на основе SSN и информации электронной почты.