使用GROUP_CONCAT简化mysql查询
说明文档:
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
GROUP_CONCAT(expr)
This function returns a string result with the
concatenated non-NULL values from a group.
It returns NULL if there are no non-NULL values.
The full syntax is as follows:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
mysql> SELECT student_name,-> GROUP_CONCAT(test_score)-> FROM student-> GROUP BY student_name;Or:
mysql> SELECT student_name,-> GROUP_CONCAT(DISTINCT test_score-> ORDER BY test_score DESC SEPARATOR ' ')-> FROM student-> GROUP BY student_name;如产品询问单使用方法:产品表 : productsProID : 产品编号ProName : 产品名称订单表 : ordersOrderID : 订单编号orderTime: 订单时间索引表: indexsOrderID 订单号ProID 产品号-----------------------CREATE TABLE `products` (`ProID` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,`ProName` VARCHAR( 255 ) NOT NULL) ENGINE = MYISAM ;CREATE TABLE `orders` (`OrderID` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,`RequestTime` DATETIME NOT NULL) ENGINE = MYISAM ;CREATE TABLE `indexs` (`OrderID` INT UNSIGNED NOT NULL DEFAULT '0',`ProID` INT UNSIGNED NOT NULL DEFAULT '0',INDEX ( `OrderID` , `ProID` )) ENGINE = MYISAM ;INSERT INTO `products` ( `ProID` , `ProName` )VALUES (1, 'pro1'), (2 , 'pro2'),(3 ,'pro3');INSERT INTO `orders` ( `OrderID` , `RequestTime` )VALUES (1, '0000-00-00 00:00:00' ), (2, '0000-00-00 00:00:00');UNSERT INTO `indexs` ( `OrderID` , `ProID` )VALUES ('1', '1'), ('1', '2'),( '2','1'),( '2','3'); --------------------- SELECTGROUP_CONCAT(products.ProName ORDER BY products.ProName SEPARATOR ',' ) AS ProNamesFROM `indexs` , orders, productsWHERE indexs.OrderID = orders.OrderID AND indexs.ProID = products.ProIDGROUP BY orders.OrderID结果为 ProNamespro1,pro2
pro1,pro3


