#php #mysql #union #group-concat
#php #mysql #объединение #group-concat
Вопрос:
В моей базе данных есть 2 таблицы, которые идентичны по структуре, но содержат разные записи. В каждой таблице есть поле «ключевые слова», которое содержит данные, разделенные запятыми.
На данный момент я запускаю 2 запроса MySQL, чтобы получить 2 разных результата, которые я затем объединяю, используя следующие инструкции MySQL:
SELECT GROUP_CONCAT(keywords) keywords FROM table1
и
SELECT GROUP_CONCAT(keywords) keywords FROM table2
Я уверен, что смогу получить то, что мне нужно, используя одну инструкцию MySQL, но все мои попытки использовать GROUP_CONCAT и UNION потерпели неудачу.
Спасибо за любые указания / помощь.
Комментарии:
1. что именно это были за попытки? и как они потерпели неудачу? было бы неплохо, если бы вы продемонстрировали свои усилия, и нам не пришлось начинать с нуля
Ответ №1:
Попробуйте это :
SELECT CONCAT(GROUP_CONCAT(t1.keywords),',',GROUP_CONCAT(t2.keywords)) keywords FROM table1 t1, table2 t2
Если вы не хотите повторяющихся значений, тогда это будет так :
SELECT GROUP_CONCAT(DISTINCT t.keywords) FROM (
SELECT t1.keywords FROM table1 t1
UNION
SELECT t2.keywords FROM table1 t2
) t
Комментарии:
1. Это работает, за исключением того, что добавляется множество дубликатов, которых нет в реальной базе данных. Например, ключевое слово «news» содержится в 2 записях, но приведенное выше возвращает его с 24 записями!
Ответ №2:
Это так просто:
SELECT GROUP_CONCAT(keywords) keywords FROM table1
UNION
SELECT GROUP_CONCAT(keywords) keywords FROM table2
Комментарии:
1. На самом деле это было то, что я попробовал сначала, но проблема в том, что он возвращает 2 строки вместо одной.
2. Вы получаете все ключевые слова в одной строке. Вы проверили мою скрипку?
3. Да, ваша скрипка работает отлично, но когда я запускаю свою реальную базу данных, она по какой-то причине возвращает 2 строки.