2016-10-08 58 views
-2

你好人我有一个问题,关于多个值的串联进入单列,用逗号分隔,如下所示。如何连接sql中的多个值

例如有一个报表正在提取数据,但对于一列有5个值,因为对于所有列重复5次相同的行,所以我想连接该特定列的所有5个值。

请让我知道我该怎么做。下面的 是提取5个值的查询,我希望这些值只能用逗号分隔。

SELECT PAC.PACKAGED_ITEM_GID 
FROM SHIPMENT SH, ORDER_MOVEMENT OM, 
    ORDER_MOVEMENT_D OMD, S_SHIP_UNIT SSU, S_SHIP_UNIT_LINE SUL, 
    PACKAGED_ITEM PAC 
WHERE OM.SHIPMENT_GID = SH.SHIPMENT_GID 
AND OM.ORDER_MOVEMENT_GID = OMD.ORDER_MOVEMENT_GID 
AND OMD.S_SHIP_UNIT_GID = SSU.S_SHIP_UNIT_GID 
AND SSU.S_SHIP_UNIT_GID=SUL.S_SHIP_UNIT_GID 
AND SUL.PACKAGED_ITEM_GID = PAC.PACKAGED_ITEM_GID 
AND SH.SHIPMENT_GID = 'ULA/SAO.5000070143' 
+0

'SELECT PAC.PACKAGED_ITEM_GID从发货SH,ORDER_MOVEMENT OM,ORDER_MOVEMENT_D OMD,S_SHIP_UNIT SSU,S_SHIP_UNIT_LINE SUL,PACKAGED_ITEM PAC WHERE OM.SHIPMENT_GID = SH.SHIPMENT_GID AND \t OM.ORDER_MOVEMENT_GID = OMD.ORDER_MOVEMENT_GID AND OMD.S_SHIP_UNIT_GID = SSU.S_SHIP_UNIT_GID AND SSU.S_SHIP_UNIT_GID = SUL.S_SHIP_UNIT_GID AND SUL.PACKAGED_ITEM_GID = PAC.PACKAGED_ITEM_GID AND SH.SHIPMENT_GID = 'ULA/SAO.5000070143' –

+0

提供样品数据,期望的结果,并且查询你在问题文本中使用*。 –

+0

感谢您查看它,但我明白了:) –

回答

0

MySQL的字符串聚合函数是GROUP_CONCAT

您使用的是1980年代使用的连接语法。为什么?你在哪里学习?使用适当的ANSI连接代替:

SELECT GROUP_CONCAT(DISTINCT pac.packaged_item_gid) AS packaged_item_gids 
FROM shipment sh 
JOIN order_movement om ON om.shipment_gid = sh.shipment_gid 
JOIN order_movement_d omd ON omd.order_movement_gid = om.order_movement_gid 
JOIN s_ship_unit  ssu ON ssu.s_ship_unit_gid = omd.s_ship_unit_gid 
JOIN s_ship_unit_line sul ON sul.s_ship_unit_gid = ssu.s_ship_unit_gid 
JOIN packaged_item  pac ON pac.packaged_item_gid = sul.packaged_item_gid 
WHERE sh.shipment_gid = 'ula/sao.5000070143'; 

如你只选择packaged_item_gid,这是可以在s_ship_unit_line,您可以单独从该表中选择和查找匹配的出货量在IN条款。

SELECT GROUP_CONCAT(packaged_item_gid) as packaged_item_gids 
FROM s_ship_unit_line 
WHERE s_ship_unit_gid in 
(
    select ssu.s_ship_unit_gid 
    FROM shipment sh 
    JOIN order_movement om ON om.shipment_gid = sh.shipment_gid 
    JOIN order_movement_d omd ON omd.order_movement_gid = om.order_movement_gid 
    JOIN s_ship_unit  ssu ON ssu.s_ship_unit_gid = omd.s_ship_unit_gid 
    WHERE sh.shipment_gid = 'ula/sao.5000070143' 
);