CONCAT & CONCAT_WS & GROUP_CONCAT
1、CONCAT:用来连接字段,或者字符。
但是只要被连接的字段中有一个值为null,则concat得到的就是null。
即
concat(A,B),如果B为null,那么concat(A,B)=null
2、CONCAT_WS:用来连接字段,或者字符。
想要的是这样的:
连接A,B,如果B为null,那么连接后应该是A。
这时可用
CONCAT_WS(separator, str1, str2,…)
3、GROUP_CONCAT:用来合并行
SELECT orderId, GROUP_CONCAT( cast( productId AS char ) SEPARATOR '|' ) AS productId
FROM `orderline`
WHERE 1
GROUP BY orderId
LIMIT 0 , 30
FROM `orderline`
WHERE 1
GROUP BY orderId
LIMIT 0 , 30
注意:合并的列是int型的,合并出来提示[BLOB - 7 B]或者[BLOB - 7 字节],
所以一定要转换成char再拼起来
综上:最后我要实现的是具有相同orderId的 产品的ID(或name)*产品的数量用‘|’分隔,显示在同一单元格中
SELECT orderId, GROUP_CONCAT( concat_ws( '*', cast( productId AS char ) , cast( quantity AS char ) )
SEPARATOR '|' ) AS productId
FROM `orderline`
WHERE 1
GROUP BY orderId
LIMIT 0 , 30
SEPARATOR '|' ) AS productId
FROM `orderline`
WHERE 1
GROUP BY orderId
LIMIT 0 , 30
浙公网安备 33010602011771号