2012-02-09 128 views
0

我有一个基于列id_location的条目对的表。将重复值移动到另一列

"id_image", "score", "stddev", "id_image2", "score2", "stddev2", "id_location" 
3484,  0.90422, 0.06476, NULL,  NULL,  NULL,  13 
18,   0.71598, 0.06101, NULL,  NULL,  NULL,  13 

如果我想合并重复的id_location并将其移动到不同的列,因此每一行都是独一无二的,我会怎么做呢?

我看着转置和支点,但那些看起来有些不同。

这将是结果表:

"id_image", "score", "stddev", "id_image2", "score2", "stddev2", "id_location" 
3484,  0.90422, 0.06476, 18,   0.71598, 0.06101, 13 
+0

我有Python或一个MySQL数据库中的CSV来玩。这只需要做一次。 – 2012-02-09 22:04:11

回答

2

这将做到这一点,具有较高id_image出现在第一槽:

INSERT INTO new_table 
SELECT t1.id_image, t1.score, t1.stddev, t2.id_image, 
    t2.score, t2.stddev, t1.id_location 
FROM old_table t1 
JOIN old_table t2 
ON t2.id_location = t1.id_location 
    AND t2.id_image < t1.id_image 
+0

你先生,知道黑魔法。 – 2012-02-09 22:29:08

0

也许使用子查询:

UPDATE your_table 
SET 
    score2 = (SELECT score FROM your_table WHERE id_image = 3484), 
    stddev2 = (SELECT stddev FROM your_table WHERE id_image = 3484), 
WHERE id_image = 18; 
+0

我有成千上万对,所以我不能硬编码任何东西 – 2012-02-09 21:33:11

相关问题