2013-02-12 40 views
1

我想要做的是以下几点:我有一个数据库3 cols在一起形成一个独特的组合。我将这个组合提取到一个新表(表1)。现在我想将独立列中的数据与唯一3列组合相匹配。例如:合并和concat数据在同一时间

cat dog day twenty two 
cat dog day twenty eleven 
cat dog morning eleven ten 

应该成为

cat dog day "twenty=two&twenty=eleven" 
cat dog morning "eleven=ten" 

作为一个额外的评论我要补充一点,我无法预测有多少项目应连接在一起。

我尝试了以下内容:字符串字段应更新为val3,val4和val5的唯一组合的所有结果的连续。

UPDATE `db`.`table1` , `db`.`table2` 
SET 
string = 
(
SELECT group_concat(value1,'=',value2,'&') from table2 
group by (val3,val4,val5) 
) 
WHERE 
(
`table1`.`val3`=`table2`.`val3` AND 
`table1`.`val4=table2`.`val4` AND 
`table1`.`val5=table2`.`val5`) 
; 

提示或提示将不胜感激。 Thansks提前。 仅供参考:Solution不适用于我,因为我正在使用mySQL,我需要将两个col匹配在一起。

+0

我认为我们需要更多地了解你的表sructure,但我认为初始化你的组concat应该看起来可能更像这样:'GROUP_CONCAT(CONCAT(value1,'=',value2)SEPARATOR“&”)',尝试添加并删除你的'WHERE'子句。 – 2013-02-12 12:10:19

+0

请参阅http://stackoverflow.com/questions/13059740/sql-consolidating-groups-of-data/以获取合并行的帮助。 – Barmar 2013-02-12 12:14:13

+0

我们可以看到样本记录吗? – 2013-02-12 12:16:06

回答

0

鉴于这种数据结构:

CREATE TABLE `dummy` (
    `col1` varchar(20), 
    `col2` varchar(20), 
    `key` varchar(20) DEFAULT NULL, 
    `val` varchar(20) DEFAULT NULL 
); 

下面的查询会给你你所问的:

select col1, col2, group_concat(concat(`key`,'=', `val`) SEPARATOR '&') from dummy group by col1, col2