У меня две длинные таблицы в mySQL, которая имеет следующий вид:
Tab1
=========
col1 col2
A X
B Y
а также
Tab2
=========
col3 col4
A dog
A cat
A dog
B tree
B tree
B bush
Я хотел бы получить для каждой строки Tab1 различные значения Tab2, где col1 = col3, так что вывод выглядит примерно так:
Col1 Col4
A (dog,cat)
B (tree,bush)
Я пробовал с помощью комбинации SELECT DISTINCT
и JOIN ON
но я просто получаю
dog
cat
tree
bush
Это то, что я хотел бы сделать выполнимым? Спасибо вам за помощь
SELECT Tab1.col1, GROUP_CONCAT(DISTINCT Tab2.col4)
FROM Tab1
INNER JOIN Tab2 ON Tab1.col1 = Tab2.col3
GROUP BY Tab1.col1
Имейте в виду, что "результат усечен до максимальной длины, который задается системной переменной group_concat_max_len, которая имеет значение по умолчанию 1024". (https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat)
Вы должны установить эту переменную в более высокое значение, если вы ожидаете множество конкатенированных значений.