【问题标题】:how can i update a column using different value in all rows?如何在所有行中使用不同的值更新列?
【发布时间】:2014-05-12 00:07:56
【问题描述】:

我想用不同的值更新单个列的所有行。例如,我想使用从具有单列输出的 select 语句中获得的值更新所有 id。基本上我想将该输出结果作为列添加到表中。

【问题讨论】:

  • 例如,我有一个表,其中包含一列工资。默认情况下,该特定列的值为零,行为五。现在我想为它添加不同的值。这些值取自 select 语句给出的输出。

标签: mysql sql-update insert-update


【解决方案1】:

如果子查询从另一个表返回单个值,您可以这样做

UPDATE t1 SET str=(SELECT value FROM t2 WHERE t2.id=t1.id LIMIT 1);

【讨论】:

  • 子查询返回多行
  • 子查询返回多行。
  • 您可以使用“LIMIT 1”。或“ORDER BY RAND() LIMIT 1”用于不同的值
【解决方案2】:

假设这两个表(例如 tableA 和 tableB)有某种关系,你可以这样做:

UPDATE tableA, tableB
SET tableA.columnToBeUpdated = tableB.columnSourceOfData
WHERE tableA.id = tableB.idOfTableA

我只是对列使用占位符名称,如果您提供数据库架构,答案会更准确

【讨论】:

  • 这两个表与电影 ID 有共同的关系。在表 A 我有 id,title。在表 B 中,我有 id,name。我的 select 语句通过将数据与标题分组来返回所有 id 的数量。所以我的输出是计算该特定标题的 id 数。现在我想在表 A 中添加该计数值。输出有多行,因为我对其进行了分组。
  • 抱歉,您能说得更具体点吗?你这两张表的关系是一对一还是一对多?如果可以,请发布您的选择查询和两个表的创建查询
  • 我想将输出添加到我的一张桌子给我一个一般的例子。输出是按标题从客户组中选择 count(customer_id)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多