我在sql中不擅长。我看着堆栈溢出,但似乎没有什么对我有用。所以,我正在寻求帮助。是否可以根据行中的第一个字段将2行分为1行。
我在mysql中这样做。我将展示这个例子。
这是我的疑问。
SELECT `ps_product_attribute_combination`.`id_product_attribute`,`ps_attribute`.`id_attribute_group`,`ps_attribute_group_lang`.`name`,`ps_product_attribute_combination`.`id_attribute`,`ps_attribute_lang`.`name`
FROM `ps_product_attribute_combination`
LEFT JOIN `ps_attribute`
ON `ps_product_attribute_combination`.`id_attribute`=`ps_attribute`.`id_attribute`
LEFT JOIN `ps_attribute_lang`
ON `ps_attribute`.`id_attribute`=`ps_attribute_lang`.`id_attribute`
LEFT JOIN `ps_attribute_group_lang`
ON `ps_attribute`.`id_attribute_group`=`ps_attribute_group_lang`.`id_attribute_group`
WHERE `ps_attribute_lang`.`id_lang`='2' AND `ps_attribute_group_lang`.`id_lang`='2'
ORDER BY `ps_product_attribute_combination`.`id_product_attribute` ASC, `ps_attribute`.`id_attribute_group` ASC
此查询的输出是。
我需要的是,基于第一个字段id_product_attribute = 0,将所有其他信息从第二行放到第一行的末尾(没有第二行的第一个字段)
所需的最终结果应为
我怎么能做到这一点?我想学习。所以任何想法都表示赞赏。 感谢所有前进。
答案 0 :(得分:1)
SELECT id_product_attribute,
SUBSTRING_INDEX(id_attribute_group,',',1) as id_attribute_group,
SUBSTRING_INDEX(name,',',1) as name,
SUBSTRING_INDEX(id_attribute,',',1) as id_attribute,
SUBSTRING_INDEX(name2,',',1) as name2,
SUBSTRING_INDEX(id_attribute_group,',',-1) as id_attribute_group2,
SUBSTRING_INDEX(name,',',-1) as name3,
SUBSTRING_INDEX(id_attribute,',',-1) as id_attribute2,
SUBSTRING_INDEX(name2,',',-1) as name4
FROM
(SELECT id_product_attribute,
GROUP_CONCAT(id_attribute_group) as id_attribute_group,
GROUP_CONCAT(name) as name,GROUP_CONCAT(id_attribute) as id_attribute,
GROUP_CONCAT(name2) as name2
FROM T
GROUP BY id_product_attribute)T2