У меня возникли проблемы с запросом mysql. Я хочу получить уникальное сопряжение имен, которые имеют один и тот же номер tenant_group_id. Все, что вам нужно знать, это то, что у каждого арендатора есть уникальный индивидуальный_идентификационный_ид, и до двух индивидуальных арендаторов используют один и тот же tenant_group_id.MySQL Выберите уникальную партию имен
SELECT t1.first_name, t2.first_name
FROM individualtenant t1
LEFT JOIN individualtenant t2 ON t1.tenant_group_id = t2.tenant_group_id
AND t1.individual_tenant_id != t2.individual_tenant_id
Сейчас это дает мне пары, но оба пути, к примеру, было бы вернуться «Джон», «Melissa» и «Мелисса», «Джон», но мне нужно только уникальное спаривание.
EDIT: И если у индивидуума нет партнера, мне нужно иметь NULL во второй колонке.
Большой успех! Теперь, если я захочу СЧИТАТЬ эти пары. Кажется, вы не можете обернуть GROUP_CONCAT (first_name) с помощью COUNT(), как бы я сделал это для второго. А также, что такое хороший способ объединить эти два имени в один столбец с разделительным пространством? (Извините за все запросы) – MCH
Прежде всего, если вы хотите подсчитать количество членов в результате, у вас будет только второй столбец 'COUNT (*)' (или любое конкретное уникальное поле). Я бы не рекомендовал разделять имена с пространством, поскольку это может быть законным содержимым имени, я бы рекомендовал выбрать «СЕПАРАТОР», который является непечатаемым персонажем (посмотрите на руководство, как работает «group_concat») поэтому более или менее ожидалось, что никогда не будет в столбце «first_name», если не будет некоторая ошибка ввода. Помните, что это «хакерство»: тщательно выберите свой разделитель и всегда будьте бдительны/подозрительны. – Wrikken