MySQL 子查询或连接

MySQL subquery or join

我必须将日期从一个 table 迁移到另一个。

这是来源Table。对于每个 testid,有 2 个通道,每个通道 3 行。

id  value1  value2  testid  channel
1   123     567     789     asd
2   125     587     789     asd
3   126     596     789     asd
4   569     12      789     qwe
5   567     15      789     qwe
6   563     19      789     qwe
7   12      877     963     asd
8   23      765     963     asd
9   34      676     963     asd
10  987     23      963     qwe
11  876     34      963     qwe
12  678     12      963     qwe

进入这个

id  value1_asd  value2_asd  value1_qwe  value_2_qwe test_id
1     124.6       583.3      566.3        15.3       789

这可以在一次查询中完成吗?我可以多次完成,但在我的真实 table 中需要很长时间。我有超过 400 万个条目。

首先,为了简单起见,保留第二个 table 自动递增的 id

那么你可以运行这个查询,

INSERT INTO table2 (value1_asd,value2_asd,value1_qwe,value_2_qwe,test_id) SELECT AVG(T1.value1),AVG(T1.value2),AVG(T2.value1),AVG(T2.value2),AVG(T3.testid)
FROM Table1 AS T1,Table1 AS T2,Table1 AS T3 
WHERE T1.channel='asd' AND T2.channel='qwe';

select 将 select 字段的平均值。由于我们这里有 3 个场景

1)channel='asd'
2)channel='qwe'
3)testid

我们将相同的 table 视为 3 个不同的 table(使用别名)。 在 select 中编辑的值 select 将插入到第二个 table table2.

希望对您有所帮助。

我想我找到了解决办法...

INSERT INTO table2 (value1_asd,value2_asd,value1_qwe,value_2_qwe,test_id) SELECT T1.v1,T1.v2,T2.v1,T2.v2,T2.testid
FROM (SELECT AVG(`value1`) as v1, AVG(`value2`) as v2, `channel`, `testid` FROM table1 WHERE `channel` = 'asd' GROUP BY `testid`) AS T1,
(SELECT AVG(`value1`) as v1, AVG(`value2`) as v2, `channel`, `testid` FROM table1 WHERE `channel` = 'qwe' GROUP BY `testid`) AS T2
WHERE T1.testid = T2.testid
GROUP BY T2.testid

感谢您的解决方案,它给了我正确的想法。 新加坡