【问题标题】:Adding two rows of different tables in MySQL在 MySQL 中添加两行不同的表
【发布时间】:2015-09-09 01:47:36
【问题描述】:

我需要将 table2 中的一行的值(例如 Id2=2)添加到 table1 中的一行(例如 Id=1)。 MySQL数据库共有100+列

table1

+---+---+---+---+
|Id1| A | B | C |
+---+---+---+---+
| 1 | 0 | 1 | 0 | <- selected row
| 2 | 1 | 1 | 0 |
| 3 | 0 | 0 | 1 |
| n | 0 | 1 | 1 |
+---+---+---+---+

table2

+---+---+---+---+
|Id2| A | B | C |
+---+---+---+---+
| 1 | 0 | 1 | 0 |
| 2 | 0 | 1 | 1 | <- selected row
| 3 | 1 | 0 | 0 |
| n | 1 | 1 | 1 |
+---+---+---+---+

结果:table1

+---+---+---+---+
|Id1| A | B | C |
+---+---+---+---+
| 1 | 0 | 2 | 1 | <- updated
| 2 | 1 | 1 | 0 |
| 3 | 0 | 0 | 1 |
| n | 0 | 1 | 1 |
+---+---+---+---+

已经尝试了很多东西,但没有奏效。以为我需要看起来像:

UPDATE table1 
SET (SELECT * FROM table1 WHERE Id=1) = (SELECT * FROM table1 WHERE Id=1) +  (SELECT * FROM table2 WHERE Id=2)

希望你们能帮帮我:)。

【问题讨论】:

  • 您的意思是一个表中有 100 列吗? OMG 数据库不是电子表格。
  • @e4c5 它实际上是我在 Excel/vba 中编写的一个应用程序,现在是一个在线版本。似乎mysql不是一个合适的工具,你能推荐别的吗? Redis?
  • Mysql 是一个合适的“工具”,只是 RDBMS 中的数据结构与电子表格有很大不同。如果您想像大自然一样保留电子表格,您将需要使用 nosql 系统。

标签: mysql


【解决方案1】:

该语法不起作用。您需要单独更新每一列。 如果您可以设法在 2 个表之间获得一个公共键,则可以遵循以下语法。

UPDATE items,month SET items.price=month.price+items.price
WHERE items.id=month.id;

更多参考这里..https://dev.mysql.com/doc/refman/5.0/en/update.html

【讨论】:

  • 很遗憾,只有两个表的列相等。看起来我需要做 100 多个查询,不是吗?
  • 如果你的 id 匹配总是像 1 到 2。你可以说 id=id+1。那么你可以像上面的查询一样编写。如果没有,您必须选择每个目标列的值并更新源表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2016-05-12
  • 2013-08-15
相关资源
最近更新 更多