从新列中的两个表中减去两列

时间:2012-08-28 19:26:47

标签: mysql sql

我有两个类似的表:

+-----+------+------+---------------------+
| ID  |  A   |   B  |      Timestamp      | 
| 308 | 1.82 | 1.38 | 2012-08-28 21:17:59 |
| 309 | 1.81 | 1.81 | 2012-08-28 21:18:25 |
| 310 | 1.38 | 1.34 | 2012-08-28 21:18:43 |
+-----+------+------+---------------------+

需要像这样创建新表:

+-----+------+------+---------------------+
| ID  |A1-A2 | B1-B2|      Timestamp      | 
| 308 |  x   |   x  | 2012-08-28 21:17:59 |
| 309 |  x   |   x  | 2012-08-28 21:18:25 |
| 310 |  x   |   x  | 2012-08-28 21:18:43 |
+-----+------+------+---------------------+

是否有人对此查询或sql cmd有任何建议?

修改

抱歉,我的错,我没有说明。

我需要通过时间戳来减去和同步表,不需要ID或重要。两个表每秒填充2个数字(a,b),自动生成时间戳

它有什么方法可以计算这2个表在循环中的这个子时间?输出应该是这样的,每秒计算一次,有可能吗?

+---------------------+-------+------+
|      Timestamp      |A1-A2  | B1-B2|  
| 2012-08-28 21:17:59 |  x    |   x  |
| 2012-08-28 21:18:25 |  x    |   x  |
| 2012-08-28 21:18:43 |  x    |   x  |
+---------------------+-------+------+

2 个答案:

答案 0 :(得分:2)

使用insert into <your new table name> into后跟select语句创建新表。我假设第一个表名为t1,第二个表名为t2

insert into new_table from
select t1.id, (t1.a - t2.a) as a1_a2, (t1.b - t2.b) as b1_b2, t1.timestamp
from t1
join t2 on (t1.id=t2.id)

列标题在新表中用作列名,但不能在其中包含短划线。

答案 1 :(得分:2)

如果ID相同。你会创建新表并像这样填充它

INSERT INTO new_table
SELECT t1.id, (t1.a - t2.a), (t1.b - t2.b), t1.timestamp, ....
FROM table1 as t1 INNER JOIN table2 as t2 on t1.id = t2.id

请注意,您没有指定要对其他字段执行的操作,您可以根据需要随时使用这两个表中的数据。