Вы можете использовать функцию GROUP_CONCAT
, которая работает с командой GROUP BY
.
SELECT BillNo,
GROUP_CONCAT(Rate, ' ', Weight SEPARATOR ' ') AS DATA,
GROUP_CONCAT(TYPE SEPARATOR ' ') AS TYPE
FROM BillData
GROUP BY BillNo;
Редактировать
Это хорошо работает для меня в MySQL 5.1.53.Вы не указали, поэтому, возможно, вы используете другой движок базы данных.Вот код создания таблицы.Вы можете вырезать и пропустить его, а также синтаксис SQL выше: <pre>
CREATE TABLE <code>BillData
(BillNo
int (11) DEFAULT NULL, SlNo
int (11) DEFAULT NULL, Rate
float DEFAULT NULL, Weight
floatDEFAULT NULL, Type
varchar (2) DEFAULT NULL) ENGINE = MyISAM CHARSET DEFAULT = utf8;
ЗАМКИ СТОЛОВ BillData
НАПИСАТЬ;/ *! 40000 ALTER TABLE BillData
ОТКЛЮЧЕННЫЕ КЛАВИШИ /;INSERT INTO BillData
(BillNo
, SlNo
, Rate
, Weight
, Type
) ЗНАЧЕНИЯ (10001,1000,3.321, «GM»), (10001,2,1200,2.354,«GM»), (10001,3,1300,1.891, «CT»), (10002,1,900,5458, «GM»), (10003,1,1450,9.52, «GM»), (10003,2,1100,6.352, «GM»);
/ ! 40000 ALTER TABLE BillData
ENABLE KEYS * /;РАЗБЛОКИРОВАТЬ СТОЛЫ;
И я получаю эти результаты из запроса:
10001 1000 3.321 1200 2.354 1300 1.891 GM GM CT
10002 900 5.458 GM
10003 1450 9.52 1100 6.352 GM GM