выбрать отдельное объединение нескольких таблиц

0

У меня две длинные таблицы в 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

Это то, что я хотел бы сделать выполнимым? Спасибо вам за помощь

  • 0
    Tab2 не является таблицей в строгом смысле rdbms, потому что у нее нет уникального ключа. Можете ли вы как-то решить эту проблему? В противном случае это не проблема SQL
  • 0
    Исходная вкладка Tab2 также имеет 3 столбца, который устанавливается в качестве первичного ключа, где все значения отличаются друг от друга.
Показать ещё 3 комментария
Теги:

1 ответ

0
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)

Вы должны установить эту переменную в более высокое значение, если вы ожидаете множество конкатенированных значений.

  • 0
    Таким образом, я получаю только первый ряд, который является A (собака, кошка), но не B (дерево, куст)
  • 0
    Мой плохой: я забыл про GROUP BY! Я отредактировал свой ответ с исправлением.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню