У меня есть таблица, полная имен и адресов. Я хочу объединить (group_concat) все строки, которые имеют одинаковые значения для города и названия города, но только если один из адресов имеет значение NULL. Например, у меня может быть эта таблица:
name | addr | city | state | phone
jon snow | 123 got st | la | CA | 1234567890
jon snow | NULL | la | CA | 1225556789
walker | 777 diff ln| la | CA | 4556678899
walker |456 crown rd| la | CA | 33344455566
Я бы хотел, чтобы результат был:
name | addr | city | state | phone
jon snow | 123 got st | la | CA | 1234567890,1225556789
walker | 777 diff ln| la | CA | 4556678899
walker |456 crown rd| la | CA | 33344455566
В настоящее время я использую следующую команду:
SELECT name, group_concat(distinct(addr)) as addr, city, state, group_concat(distinct phone) as phone from got_table group by name, city, state having count(*) >1;
В результате объединяются все адреса с одинаковым именем, городом, штатом, даже если есть два ненулевых адреса. Результат вышеприведенного утверждения выглядит следующим образом:
name | addr | city | state | phone
jon snow | 123 got st | la | CA | 1234567890,1225556789
walker | 777 diff ln, 456 crown rd| la | CA | 4556678899, 33344455566
Есть ли способ объединить, только если один из адресов строки равен NULL, и выполнять этот group_concat, только если совпадают только 2 строки.