2016-12-20 3 views
0

Как присоединиться ко многим полям с разными идентификаторами только в одном? У меня есть этот MySQL таблицу:Объединить таблицы с разными ID в PHP

-------------------------------- 
| *UDH*  |  *Text*  | 
-------------------------------- 
| 050003B90301 | Hi my name is A| 
-------------------------------- 
| 050003B90302 | rmin and I wan | 
-------------------------------- 
| 050003B90303 | t be your frien | 
-------------------------------- 

Поле UDH отличается, но мне нужно присоединиться текстовое поле, чтобы скопировать в другую таблицу, то результат должен быть таким:

______________________________________________________________ 
| UDH   |  Text          | 
-------------------------------------------------------------- 
| 1   | Hi my name is Armin and I want be your frien | 
--------------------------------------------------------------- 

Знаете ли вы, предложение PHP или другой способ сделать что-то вроде этого?

ответ

0

Использование GROUP_CONCAT(). Как это:

select '1' as UDH, group_concat(`Text` separator '') as `Text` from myTable; 

Если вам необходимо заказать по UDH колонку, вы можете сделать это в пределах group_concat() вызова, как это:

select '1' as UDH, group_concat(`Text` order by UDH separator '') as `Text` from myTable; 

Я только что утвердившим этот запрос с помощью следующего тестового кода, основанного на ваш пример:

mysql> create table myTable (UDH varchar(32), `Text` text) engine=innodb; 
Query OK, 0 rows affected (0.05 sec) 

mysql> insert into myTable (UDH, `Text`) values ('050003B90301', 'Hi my name is A'), ('050003B90302', 'rmin and I wan'), ('050003B90303', 't be your frien'); 
Query OK, 3 rows affected (0.00 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> select * from myTable; 
+--------------+-----------------+ 
| UDH   | Text   | 
+--------------+-----------------+ 
| 050003B90301 | Hi my name is A | 
| 050003B90302 | rmin and I wan | 
| 050003B90303 | t be your frien | 
+--------------+-----------------+ 
3 rows in set (0.00 sec) 

mysql> select '1' as UDH, group_concat(`Text` order by UDH separator '') as `Text` from myTable; 
+-----+----------------------------------------------+ 
| UDH | Text           | 
+-----+----------------------------------------------+ 
| 1 | Hi my name is Armin and I want be your frien | 
+-----+----------------------------------------------+ 
1 row in set (0.01 sec) 
+0

У вас отсутствует аргумент ORDER BY – Strawberry

+0

Хорошая точка. Я обновил свой ответ. – Asaph

+0

Большое спасибо, это работает, и теперь, как ограничить 2 или 3 поля? – Synapsido

Смежные вопросы